2014-05-11 14 views
6

Używam tego kodu z .NET 3.5 i otrzymuję komunikat o błędzie "Serwer zdalny zwrócił błąd: (407) Wymagane uwierzytelnienie proxy."Serwer zdalny zwrócił błąd: (407) Wymagane jest uwierzytelnienie proxy

using (WebClient client = new WebClient()) 
{ 
    WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials; 

    try 
    { 
     string webPageStr = client.DownloadString(URL); 
     Console.WriteLine("OK"); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine("FAIL"); 
     Console.WriteLine(ex.Message); 
    } 
} 

Jednak ten kod działa płynnie z .NET 4.0 jako linia ta jest wystarczająca do zabicia uwierzytelnianie serwera proxy podczas gdy nie jest to dla .NET 3.5.

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials; 

Dlatego próbowałem wiele innych sposobów, aby rozwiązać ten problem, ale żaden z nich nie działa:

1) Wymień linię CredentialCache.DefaultCredentials z

WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(user, password, domain); 

2) Tworzenie nowego obiektu proxy

IWebProxy proxy = new WebProxy(proxyUrl, port); 
proxy.Credentials = new NetworkCredential(user, pass, domain); 
client.Proxy = proxy; 
client.Credentials = new NetworkCredential(user, pass, domain); 

3) Dodaj tę linię

client.UseDefaultCredentials = true; 

4) Użyj HttpWebRequest zamiast WebClient i powtórz wszystkie powyższe czynności. To jest przykładowy kod.

HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest; 
webRequest.Proxy = WebRequest.DefaultWebProxy; 
webRequest.Credentials = new NetworkCredential(user, pass, domain); 
webRequest.Proxy.Credentials = new NetworkCredential(user, pass, domain); 

try 
{ 
    webRequest.GetResponse(); 
    Console.WriteLine("OK"); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine("FAIL"); 
    Console.WriteLine(ex.Message); 
} 

Czuję, że dochodzę do ślepego zaułku, ponieważ muszę korzystać z .NET 3.5. Musi być różnica między tymi dwiema wersjami .NET, których nie znam. Z góry bardzo dziękuję.

+0

Czy kiedykolwiek znalazłeś rozwiązanie 3.5? Wpadam na to samo, aktualizacja 4.0 wygląda jak tylko opcja. –

Odpowiedz

10

Wystarczy dodać ten config

<system.net> 
     <defaultProxy useDefaultCredentials="true" > 
     </defaultProxy> 
    </system.net> 
0

miałem ten problem z rozwiązań Visual Studio przed. Pomogło mi to:

Otwórz IE. Przejdź do Narzędzia -> Opcje internetowe. Kliknij kartę Połączenia, a następnie przycisk Ustawienia sieci LAN. Usuń zaznaczenie opcji "Automatycznie wykryj ustawienia".

Powiązane problemy