Tôi đang cố gắng sử dụng System.Net.WebClient trong ứng dụng WinForms để tải tệp lên máy chủ IIS6 có xác thực Windows là chỉ phương thức 'Xác thực'.System.Net.WebClient không hoạt động với Xác thực Windows
WebClient myWebClient = new WebClient();
myWebClient.Credentials = new System.Net.NetworkCredential(@"boxname\peter", "mypassword");
byte[] responseArray = myWebClient.UploadFile("http://localhost/upload.aspx", fileName);
tôi nhận được một 'Các máy chủ từ xa trở về một lỗi: (401) trái phép', trên thực tế nó là một 401,2
Cả khách hàng và IIS là trên cùng một máy Dev Windows Server 2003.
Khi tôi cố gắng mở trang trong Firefox và nhập cùng thông tin xác thực giống như trong mã, trang sẽ xuất hiện. Tuy nhiên khi sử dụng IE8, tôi gặp lỗi 401.2.
Đã thử Chrome và Opera và cả hai đều hoạt động.
Tôi bật tính năng 'Bật xác thực Windows tích hợp' trong tùy chọn Internet của IE.
Security Event Log có Audit thất bại:
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
tôi đã sử dụng Process Monitor và Fiddler để điều tra nhưng không có kết quả.
Tại sao tính năng này hoạt động cho trình duyệt của bên thứ ba nhưng không hoạt động với IE hoặc System.Net.WebClient?
Sau khi thay đổi các phương thức xác thực duy nhất trong IIS từ Integrated Windows để cơ bản nó hoạt động, nhưng điều đó không giải quyết vấn đề của tôi bởi vì tôi không thể thay đổi điều đó thiết lập trên máy chủ sản xuất. –
Tôi đã sử dụng công cụ Chẩn đoán và Xác thực Kiểm soát Truy cập của IIS 'để theo dõi quá trình và so sánh nhật ký cho Firefox với trình duyệt dành cho IE. Dường như tất cả đều ổn cho đến khi thử thách/phản hồi NTLM thất bại, nhưng nó cũng không cho tôi bất kỳ đầu mối nào tại sao nó thực hiện. –
Tôi đã thực hiện một số thử nghiệm khác: Máy chủ 2003 mô tả ở trên thực sự là một máy ảo trong Virtual PC, khi sử dụng IE từ máy chủ tôi có thể xác thực, nhưng không sử dụng IE trên máy khách. Tuy nhiên, bằng cách sử dụng trình duyệt IE của khách hàng khi sử dụng địa chỉ IP của trang web thay vì tên máy chủ được thiết lập thông qua tệp máy chủ lưu trữ. Đôi khi bị hỏng ở đây! Tôi chỉ vui vì nó không phải trên một máy chủ sản xuất. –