L'usurpation d'identité et CredentialCache.DefaultCredentials donne HTTP 401 non autorisé

J'ai un service web ASMX (sur mon localhost - WinXP IIS 5.1) que j'ai appeler à partir d'un client web. Mon webservice doit consommer un autre service web ASMX (sur un Win 2003 serveur IIS 6.0).

Quand je fournir des informations d'identification dans mon webservice code dans un codées "en dur":

engineWSE.Credentials = new System.Net.NetworkCredential("myUser", "myPass", "myDomain");

...subséquente d'invoquer le service web distant fonctionne très bien.

Maintenant, je suis en train d'usurper l'identité de moi-même dans certains tests initiaux. Ma première lecture sur ce dit moi, ce peut être un grand sujet, mais voici ce que j'ai fait pour les débutants:

  1. DÉCOCHÉ "accès Anonyme" dans mon
    le répertoire virtuel pour le WebClient
    site sur mon localhost

  2. dans le web.config de mon client web site, j'ai créé: authentication mode="Windows" et de l'identité d'usurper l'identité d'="true"

  3. dans le webmethod de mon webservice qui a appeler le service à distance,
    J'ai changé pour:

    engineWSE.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
  4. Lorsque la distance webservice est appelé avec ces
    DefaultCredentials, j'ai l'
    erreur suivant:

    Système.Web.Services
    Système.Web.Services.Les protocoles.SoapException: le Serveur n'a pas pu traiter la demande.--->

    Système.Net.WebException: La demande a échoué avec l'état HTTP 401: non autorisé.

    au Système.Web.Services.Les protocoles.SoapHttpClientProtocol.ReadResponse
    (SoapClientMessage message, WebResponse réponse, Flux responseStream, Boolean asyncCall)

    au Système.Web.Services.Les protocoles.SoapHttpClientProtocol.Invoke(Chaîne methodName, Object[] paramètres)

Je ne suis pas sûr de savoir si j'ai mal compris et essayé de sur-simplifier "usurpation d'identité", ou si la distance webservice est en quelque sorte filaire pour n'accepter que les informations d'identification avec 3 arguments (c'est à dire nom d'utilisateur, mot de passe, nom de domaine).

OriginalL'auteur John Adams | 2009-04-07