Ich erhalte die folgende Fehlermeldung, wenn ich einen Webdienst aufrufe:
"Der Remote-Server hat einen Fehler zurückgegeben: (407) Proxy-Authentifizierung erforderlich".
Ich habe die allgemeine Idee und kann den Code durch Hinzufügen zum Laufen bringen
myProxy.Credentials = NetworkCredential("user", "password", "domain");
oder indem Sie DefaultCredentials im Code verwenden. Mein Problem ist, dass der Aufruf des Webdienstes in der Produktion ohne dies funktioniert.
Es scheint, als gäbe es eine Nicht-Code-Lösung mit Machine.config, aber was ist das? Im Moment kann ich nicht in die Datei machine.config 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>
Im folgenden Code müssen wir die Anmeldeinformationen nicht fest codieren.
quelle
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:
Musste die Anmeldeinformationen an zwei Stellen einstellen, um den 407-Fehler 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!
quelle
Wahrscheinlich hat die Maschine oder web.config in prod die Einstellungen in der Konfiguration; Sie werden das Proxy-Tag wahrscheinlich nicht benötigen.
<system.net> <defaultProxy useDefaultCredentials="true" > <proxy usesystemdefault="False" proxyaddress="http://<ProxyLocation>:<port>" bypassonlocal="True" autoDetect="False" /> </defaultProxy> </system.net>
quelle
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.
quelle
Ich hatte ein ähnliches Proxy-Problem. In meinem Fall war es genug hinzuzufügen:
webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");
quelle
Ich dachte daran, diese Antwort zu schreiben, da von oben nichts funktioniert hat und Sie keinen Proxy-Speicherort angeben möchten.
Wenn Sie verwenden, sollten Sie
httpClient
dies berücksichtigen.HttpClientHandler handler = new HttpClientHandler(); IWebProxy proxy = WebRequest.GetSystemWebProxy(); proxy.Credentials = CredentialCache.DefaultCredentials; handler.Proxy = proxy; var client = new HttpClient(handler); // your next steps...
Und wenn Sie verwenden
HttpWebRequest
:Freundliche Referenz: https://medium.com/@siriphonnot/the-remote-server-returned-an-error-407-proxy-authentication-required-86ae489e401b
quelle