2014-05-11 17 views
6

Ich verwende diesen Code mit .NET 3.5 und erhalten Fehler "Der Remote-Server hat einen Fehler zurückgegeben: (407) Proxy-Authentifizierung erforderlich."Der Remote-Server zurückgegeben Fehler: (407) Proxy-Authentifizierung erforderlich

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

Allerdings funktioniert dieser Code reibungslos mit .NET 4.0, da diese Linie ausreicht, um die Proxy-Authentifizierung zu übergeben, während es nicht für .NET 3.5 ist.

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials; 

Deshalb habe ich versucht, viele andere Möglichkeiten, dieses Problem zu lösen, aber keiner von ihnen arbeitet:

1) ersetzen CredentialCache.DefaultCredentials Linie mit

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

2) Erstellen Sie neue Proxy-Objekt

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

3) Fügen Sie diese Zeile

hinzu
client.UseDefaultCredentials = true; 

4) Verwenden Sie HttpWebRequest anstelle von WebClient, und wiederholen Sie alle oben genannten Schritte. Dies ist ein Beispielcode.

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

Ich fühle mich wie ich zu einer Sackgasse komme, da ich .NET 3.5 verwenden muss. Es muss einen Unterschied zwischen diesen beiden .NET-Versionen geben, die ich nicht kenne. Vielen Dank im Voraus.

+0

Haben Sie jemals eine 3.5 Lösung gefunden? Ich laufe in die gleiche Sache, 4.0 Update sieht wie nur Option aus. –

Antwort

10

Fügen Sie einfach diese config

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

ich vor dieses Problem mit Visual Studio-Lösungen hatte. Das hat mir geholfen:

IE öffnen. Gehe zu Extras -> Internetoptionen. Klicken Sie auf die Registerkarte Verbindungen und dann auf die Schaltfläche LAN-Einstellungen. Deaktivieren Sie das Kontrollkästchen "Einstellungen automatisch erkennen".