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ę.
Czy kiedykolwiek znalazłeś rozwiązanie 3.5? Wpadam na to samo, aktualizacja 4.0 wygląda jak tylko opcja. –