2014-05-11 44 views
6

Bu kodu .NET 3.5 ile kullanıyorum ve "Uzak sunucu bir hata verdi: (407) Proxy Kimlik Doğrulaması Gerekiyor." Bu çizgisi .NET 3.5 için değil iken vekil kimlik geçmek yeterlidir olarakUzak sunucu hata verdi: (407) Proxy Kimlik Doğrulaması Gerekli

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); 
    } 
} 

Ancak bu kod .NET 4.0 ile sorunsuz çalışır.

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials; 

Bu nedenle, bu sorunu çözmek için başka birçok yolu denedim ama bunların hiçbiri çalışır:

1)

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

2) Yeni oluştur vekil nesne

ile CredentialCache.DefaultCredentials hattını değiştirin
IWebProxy proxy = new WebProxy(proxyUrl, port); 
proxy.Credentials = new NetworkCredential(user, pass, domain); 
client.Proxy = proxy; 
client.Credentials = new NetworkCredential(user, pass, domain); 

3) Bu satırı ekleyin

client.UseDefaultCredentials = true; 

4) WebClient yerine HttpWebRequest kullanın ve yukarıdaki her yordamı yineleyin. Bu örnek koddur.

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); 
} 

.NET 3.5 kullanmak zorunda olduğum için çıkmaz bir çıkma noktasına gelmiş gibi hissediyorum. Bilmediğim bu iki .NET sürümü arasında fark olmalı. Şimdiden çok teşekkür ederim.

+0

Bir 3.5 çözüm buldunuz mu? Aynı şey ile koşuyorum, 4.0 güncelleme sadece seçenek gibi görünüyor. –

cevap

10

Sadece bu daha önce Visual Studio çözümleri ile bu sorunu yaşadım

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

yapılandırma için ekleyin. Bu bana yardımcı oldu:

Open IE. Araçlar -> İnternet Seçenekleri'ne gidin. Bağlantılar sekmesine, ardından LAN Ayarları düğmesine tıklayın. "Ayarları otomatik olarak algıla" nın işaretini kaldırın.

İlgili konular