Próbuję pobrać niektóre dane z wystąpienie usług raportowania na naszym serwerze TFS.
Biorąc pod uwagę, że kod powinien działać na komputerze, który nie jest połączony z domeną, uznałem, że sam ustawię poświadczenia. Bez powodzenia, otrzymałem nieautoryzowany HTTP 401 z powrotem. Ok, więc podłączyłem Fiddlera, żeby zobaczyć, co się dzieje.System.Net.WebClient nie udaje się dziwnie
Ale wtedy otrzymałem Heisenberged - połączenie zostało wykonane bez żadnych problemów. Tak więc uwierzytelnienie przechodzi z Fiddler podłączony, ale nie bez niego. Czy Webclient jest zepsuty, czy też brakuje mi czegoś głębokiego?
private void ThisWorksWhenDomainJoined()
{
WebClient wc = new WebClient();
wc.Credentials = CredentialCache.DefaultNetworkCredentials;
wc.DownloadString("http://teamfoundationserver/reports/........"); //Works
}
private void ThisDoesntWork()
{
WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential("username", "password", "domain");
wc.DownloadString("http://teamfoundationserver/reports/........"); //blows up wih HTTP 401
}
+1 za pomocą uncertaintly zasadę Heisenberga jako czasownik, nigdy wcześniej nie słyszał, że jeden! –