Estoy tratando de usar System.Net.WebClient en una aplicación WinForms para cargar un archivo en un servidor IIS6 que tiene Autenticación de Windows como es el único método de 'Autenticación'.System.Net.WebClient no funciona con la Autenticación de Windows
WebClient myWebClient = new WebClient();
myWebClient.Credentials = new System.Net.NetworkCredential(@"boxname\peter", "mypassword");
byte[] responseArray = myWebClient.UploadFile("http://localhost/upload.aspx", fileName);
me sale un 'El servidor remoto devolvió un error: (401) no autorizada', en realidad se trata de un 401,2
Tanto el cliente como IIS están en la misma máquina Dev Windows Server 2003.
Cuando intento abrir la página en Firefox e ingreso las mismas credenciales correctas que en el código, aparece la página. Sin embargo, cuando uso IE8, obtengo el mismo error 401.2.
Probé Chrome y Opera y ambos funcionan.
He habilitado 'Habilitar autenticación de Windows integrada' en las opciones de IE Internet.
La seguridad del registro de eventos tiene una Auditoría de errores:
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
que utiliza el monitor de procesos y Fiddler para investigar, pero en vano.
¿Por qué funciona esto para navegadores de terceros pero no con IE o System.Net.WebClient?
Después de cambiar el método de autenticación única en IIS de Windows integrada a Basic funciona, pero eso no resuelve mi problema porque no puedo cambiar dicha configuración en el servidor de producción. –
Utilicé la herramienta de diagnóstico de autenticación y control de acceso de IIS 'para supervisar el proceso y comparé el registro de Firefox con el de IE. Se ve bien hasta que la prueba/respuesta NTLM falla, pero tampoco me da ninguna pista de por qué lo hace. –
Hice algunas pruebas más: El Servidor 2003 descrito anteriormente es en realidad una VM en Virtual PC, cuando uso IE desde el equipo host puedo autenticar, pero no usando IE en el invitado. Sin embargo, el IE del huésped funciona cuando se utiliza la dirección IP del sitio en lugar del nombre de host configurado a través del archivo hosts. ¡Algo roto aquí! Me alegro de que no esté en un servidor de producción. –