我正在尝试在 WinForms 应用程序中使用 System.Net.WebClient 将文件上传到具有 Windows 身份验证的 IIS6 服务器,因为它只有“身份验证”方法。
WebClient myWebClient = new WebClient();
myWebClient.Credentials = new System.Net.NetworkCredential(@"boxname\peter", "mypassword");
byte[] responseArray = myWebClient.UploadFile("http://localhost/upload.aspx", fileName);
我收到“远程服务器返回错误:(401)未经授权”,实际上是 401.2
客户端和 IIS 都在同一台 Windows Server 2003 开发机器上。
当我尝试在 Firefox 中打开该页面并输入与代码中相同的正确凭据时,该页面出现了。但是,当使用 IE8 时,我得到相同的 401.2 错误。
尝试了 Chrome 和 Opera,它们都可以工作。
我在 IE Internet 选项中启用了“启用集成 Windows 身份验证”。
安全事件日志有一个失败审计:
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
我使用 Process Monitor 和 Fiddler 进行调查,但无济于事。
为什么这适用于 3rd 方浏览器,但不适用于 IE 或 System.Net.WebClient?