Próbuję użyć System.Net.WebClient w aplikacji WinForms do przesłania pliku na serwer IIS6, który ma uwierzytelnianie systemu Windows jako to tylko metoda "Uwierzytelniania".System.Net.WebClient nie działa z uwierzytelnianiem systemu Windows
WebClient myWebClient = new WebClient();
myWebClient.Credentials = new System.Net.NetworkCredential(@"boxname\peter", "mypassword");
byte[] responseArray = myWebClient.UploadFile("http://localhost/upload.aspx", fileName);
dostaję 'Zdalny serwer zwrócił błąd: (401) nieuprawnione', faktycznie jest to 401,2
Zarówno klient, jak i IIS są na tej samej maszynie Windows Server 2003 Dev.
Kiedy próbuję otworzyć stronę w Firefoksie i wprowadzić te same poprawne dane logowania, co w kodzie, pojawia się strona. Jednak podczas korzystania z IE8, otrzymuję ten sam błąd 401.2.
Próbowałem Chrome i Opery i one działają.
Mam włączone "Włącz zintegrowane uwierzytelnianie systemu Windows" w opcjach Internetowych IE.
Security Event Log ma 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
użyłem Process Monitor i Skrzypek do zbadania, ale bezskutecznie.
Dlaczego to działa w przypadku przeglądarek innych firm, ale nie w przypadku IE lub System.Net.WebClient?
Po zmianie jednej metody uwierzytelniania w IIS z Zintegrowanego systemu Windows do Podstawowy to działa, ale to nie rozwiąże mój problem, ponieważ nie mogę zmienić to ustawienie na serwerze produkcyjnym. –
Użyłem narzędzia IIS "Authentication and Access Control Diagnostics" do monitorowania procesu i porównywania logu dla Firefoksa z tym dla IE. Wygląda dobrze, dopóki wyzwanie/odpowiedź NTLM nie powiedzie się, ale nie daje mi też żadnej wskazówki, dlaczego tak się dzieje. –
Zrobiłem więcej testów: Serwer 2003 opisany powyżej jest w rzeczywistości wirtualną maszyną wirtualną, podczas używania IE z hosta mogę uwierzytelnić, ale nie używam IE na gościu. Jednak korzystanie z gościa IE działa, gdy używany jest adres IP witryny, a nie nazwa hosta ustawiona za pośrednictwem pliku hosts. Coś tu złamanego! Cieszę się, że nie ma go na serwerze produkcyjnym. –