L'appel de ASMX Service à partir de l'application en C# avec l'authentification Windows?

J'ai créé simple .NET Web Service (ASMX) que j'appelle de mes .NET application web. Le service web et application à la fois de l'utilisation de Windows Authetication.

com.mydomain.MyWebService webSrvc = new com.mydomain.MyWebService();
string output = webSrvc.MyServiceMethod();

Je suis en train de créer des applications Windows avec C#, et demandent le même service web à partir de là. J'ai ajouté une référence web dans mon projet pour le service, et je peux faire des appels vers le service web pour les méthodes sans problème. Le problème est, à l'intérieur de la web méthodes, je suis en train de récupérer de l'utilisateur nom d'utilisateur windows.

string username = User.Identity.Name; //always blank

Cela fonctionne quand j'appelle le service web à partir de mon application web, mais quand je l'appelle à partir de mon application windows, il renvoie toujours vierge, et de l'Utilisateur.L'identité.IsAuthenticated est toujours faux, si cela est pertinent. Ce qui me manque ici. J'ai juste besoin d'obtenir la version Windows de l'utilisateur nom d'utilisateur qui exécute l'application de console, qui a appelé le service web. J'ai essayé paramètre les informations d'identification de webSrvc à la ClientCache informations d'identification par défaut, mais qui ne résout pas le problème.

Mise à JOUR: je ne sais pas si c'est utile, mais j'ai appris que si j'utilise de l'Environnement.Nom d'utilisateur, il va donner "NETWORK_SERVICE", et puis si j'permettre l'usurpation d'identité, il va donner "IUSR_[hostname]". Il me semble que je suis juste en manque de quelque chose de vraiment simple. Je veux juste que l'utilisateur windows actuel, qui est en cours d'exécution de l'application windows (qui appelle le service web).

OriginalL'auteur dave823 | 2012-07-10