Ich erhalte diese Fehlermeldung, wenn ich einen Webdienst anrufe:
Msgstr "Der Remote - Server hat einen Fehler zurückgegeben: (407) Proxy - Authentifizierung erforderlich".
Ich bekomme eine allgemeine Vorstellung und kann den Code zum Laufen bringen, indem ich ihn hinzufüge
myProxy.Credentials = NetworkCredential("user", "password", "domain");
oder mithilfe von DefaultCredentials im Code. Mein Problem ist, dass der Aufruf des Webservices in der Produktion ohne dieses funktioniert.
Es scheint, als gäbe es eine Nicht-Code-Lösung für Machine.config, aber was ist das? Im Moment kann ich nicht in die machine.config-Datei der Produktionsbox gelangen, um zu sehen, wie das aussieht. Ich habe versucht, meine machine.config wie folgt zu aktualisieren, erhalte aber immer noch den Fehler 407.
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<bypasslist>
<clear />
</bypasslist>
<proxy proxyaddress="myproxy:9000"
usesystemdefault="false"
bypassonlocal="true"
autoDetect="False" />
</defaultProxy>
</system.net>
Füge dies einfach zu config hinzu
<system.net>
<defaultProxy useDefaultCredentials="true" >
</defaultProxy>
</system.net>
Im folgenden Code müssen wir die Anmeldeinformationen nicht hart codieren.
service.Proxy = WebRequest.DefaultWebProxy;
service.Credentials = System.Net.CredentialCache.DefaultCredentials; ;
service.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
Wenden Sie sich an Ihren Firewall-Experten. Sie öffnen die Firewall für PROD-Server, sodass der Proxy nicht verwendet werden muss.
Vielen Dank Ihr Tipp hat mir geholfen, mein Problem zu lösen:
Die Anmeldeinformationen mussten an zwei Stellen festgelegt werden, um den Fehler 407 zu überwinden:
HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = new NetworkCredential("user", "password", "domain");
webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");
und voila!
HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = new NetworkCredential("user", "password");
webRequest.Proxy.Credentials = new NetworkCredential("user", "password");
Es ist erfolgreich.
Ich hatte ein ähnliches Proxy-Problem. In meinem Fall war es genug hinzuzufügen:
webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");