Sto cercando di utilizzare System.Net.WebClient in un'applicazione WinForms per caricare un file su un server IIS6 che ha l'autenticazione di Windows come solo metodo 'Autenticazione'.System.Net.WebClient non funziona con l'autenticazione di Windows
WebClient myWebClient = new WebClient();
myWebClient.Credentials = new System.Net.NetworkCredential(@"boxname\peter", "mypassword");
byte[] responseArray = myWebClient.UploadFile("http://localhost/upload.aspx", fileName);
ottengo un 'Il server remoto ha restituito un errore: (401) non autorizzato', in realtà si tratta di una 401.2
Sia client e IIS sono sulla stessa macchina Dev Windows Server 2003.
Quando si tenta di aprire la pagina in Firefox e immettere le stesse credenziali corrette come nel codice, viene visualizzata la pagina. Tuttavia, quando utilizzo IE8, ottengo lo stesso errore 401.2.
Ho provato Chrome e Opera ed entrambi funzionano.
I "Abilita autenticazione integrata di Windows" è abilitato nelle opzioni Internet di IE.
Security Event Log ha un Audit Failure:
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
Ho usato Process Monitor e Fiddler di indagare, ma senza alcun risultato.
Perché questo dovrebbe funzionare per i browser di terze parti ma non con IE o System.Net.WebClient?
Dopo aver cambiato il metodo di autenticazione singola in IIS da Windows integrato per base funziona, ma che non risolve il problema perché non posso cambiare questa impostazione sul server di produzione. –
Ho utilizzato lo strumento di diagnostica di autenticazione e controllo di accesso di IIS per monitorare il processo e ho confrontato il registro per Firefox con quello per IE. Sembra tutto a posto fino a quando la sfida/risposta NTLM fallisce, ma non mi dà nemmeno la minima idea del perché. –
Ho fatto altri test: il server 2003 descritto sopra è in realtà una VM in Virtual PC, quando utilizzo IE dal computer host posso autenticarmi, ma non utilizzare IE sul guest. Tuttavia, utilizzando IE del guest funziona quando si utilizza l'indirizzo IP del sito piuttosto che il nome host impostato tramite il file hosts. Qualcosa rotto qui! Sono contento che non sia su un server di produzione. –