System.Net.WebClient ne fonctionne pas avec l'authentification Windows
Je suis en train d'utiliser le Système.Net.WebClient dans une application WinForms pour télécharger un fichier vers un serveur IIS6 qui a de l'Authentification Windows comme
il ne 'Authentification' méthode.
WebClient myWebClient = new WebClient();
myWebClient.Credentials = new System.Net.NetworkCredential(@"boxname\peter", "mypassword");
byte[] responseArray = myWebClient.UploadFile("http://localhost/upload.aspx", fileName);
Je reçois un 'Le serveur distant a retourné une erreur: (401 Unauthorized", effectivement c'est un 401.2
À la fois client et IIS sont sur le même Serveur Windows 2003 Dev machine.
Lorsque j'essaie d'ouvrir la page dans Firefox et entrez les mêmes informations d'identification correctes que dans le code, la page s'.
Cependant lors de l'utilisation de IE8, j'ai le même 401.2 erreur.
Essayé Chrome et Opera, et ils travaillent tous les deux.
J'ai des " Activer l'Authentification Intégrée de Windows activé dans le IE options Internet.
Le Journal des Événements de Sécurité est un Échec de la Vérification:
Logon Failure:
Reason: An error occurred during logon
User Name: peter
Domain: boxname
Logon Type: 3
Logon Process: ÈùÄ
Authentication Package: NTLM
Workstation Name: boxname
Status code: 0xC000006D
Substatus code: 0x0
Caller User Name: -
Caller Domain: -
Caller Logon ID: -
Caller Process ID: -
Transited Services: -
Source Network Address: 127.0.0.1
Source Port: 1476
J'ai utilisé le Moniteur de Processus et de violon pour étudier, mais en vain.
Pourquoi serait-ce de travailler pour la 3e partie des navigateurs, mais pas avec IE ou d'un Système.Net.WebClient?
source d'informationauteur Peter Hahndorf | 2009-06-23
Vous devez vous connecter pour publier un commentaire.
J'ai vu un problème similaire, où l'Intégration de la sécurité NTLM ne fonctionnera que si vous accédez à l'ordinateur hôte par le nom de la machine ou localhost. En fait, c'est un [mal] document fonctionnalité de Windows qui est conçu pour protéger contre "les attaques par réflexion".
Fondamentalement, vous devez créer une clé de registre sur l'ordinateur qui tente d'accéder au serveur, et blanche le domaine que vous essayez de frapper. Chaque nom d'hôte /nom de domaine complet doit être sur sa propre ligne il n'y a pas de caractères génériques et le nom doit correspondre exactement. À partir de la base de connaissances de l'Article:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
http://support.microsoft.com/kb/956158/en-us
Avez-vous essayé ...
Vous pouvez également essayer ...
Aussi, selon cette il se peut que IIS est configuré de manière incorrecte. Essayez de remplacer "Négocier" avec "de Base" ci-dessus et la vérification de vos IIS config pour le site web. Il y a aussi un tas de causes possibles ici.
Essayez d'aller dans IE options et explicitement ajouter le site à la Zone Intranet. Puis exécutez de nouveau le programme. Vous devez également ne pas exécuter le programme à partir d'une connexion de l'administrateur. Cela peut déclencher la La Configuration de Sécurité renforcée d'Internet Explorer.
Cela pourrait expliquer pourquoi vous pouvez cliquer sur le site avec Firefox et Opera, mais pas avec IE ou WebClient.
Sans le savoir à vos IIS déploiement, et en supposant que vous avez les bonnes règles d'autorisation pour télécharger ensemble dans IIS (par exemple, le droit de permettre* d'ACL sur le droit dirs vous essayez de télécharger le contenu, etc), la première chose que je voudrais faire est d'essayer de définir UseDefaultCredentials à true au lieu de définir explicitement des informations d'Identification. (Peut-être que vous pensez que vous êtes l'accès au serveur avec les informations d'Identification que vous êtes, mais ce n'est pas le cas? Cela serait possible si cela fonctionne.)
C'est un scénario très commun, donc je me concentrerais sur IIS règles d'autorisation pour le répertoire dans lequel vous essayez de télécharger le fichier, le ACL sur ce répertoire. Pour ex. est votre site d'imposture ou pas? si c'est le cas, alors vous devez avoir de réelle ACL sur que dir, sinon tout ce qui compte de pool d'applications est en cours d'exécution sur.