De externe server heeft een fout geretourneerd: (407) Proxy-authenticatie vereist

Ik krijg deze foutmelding wanneer ik een webservice aanroep:

“De externe server heeft een fout geretourneerd: (407) Proxy Authentication Required”.

Ik snap het algemene idee en ik kan de code laten werken door toe te voegen

myProxy.Credentials = NetworkCredential("user", "password", "domain");

of door DefaultCredentials in code te gebruiken. Mijn probleem is dat de aanroep naar de webservice zonder dit in productie werkt.

Het lijkt alsof er een niet-code oplossing is met Machine.config, maar wat is het? Op dit moment kan ik niet bij het machine.config-bestand van de productiebox komen om te zien hoe dat eruitziet. Ik heb geprobeerd mijn machine.config als volgt bij te werken, maar ik krijg nog steeds de 407-fout.

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true">
        <bypasslist>
            <clear />
        </bypasslist>
        <proxy proxyaddress="myproxy:9000"
               usesystemdefault="false"
               bypassonlocal="true"
               autoDetect="False" />
    </defaultProxy>
</system.net>

Antwoord 1, autoriteit 100%

Voeg dit gewoon toe aan config

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

Antwoord 2, autoriteit 38%

In de volgende code hoeven we de inloggegevens niet hard te coderen.

service.Proxy = WebRequest.DefaultWebProxy;
service.Credentials = System.Net.CredentialCache.DefaultCredentials; ;
service.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

Antwoord 3, autoriteit 13%

Neem contact op met uw firewall-expert.
Ze openen de firewall voor PROD-servers, dus het is niet nodig om de proxy te gebruiken.

Bedankt, je tip heeft me geholpen mijn probleem op te lossen:

Moest de inloggegevens op twee locaties instellen om voorbij de 407-fout te komen:

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

en voila!


Antwoord 4, autoriteit 4%

Waarschijnlijk heeft de machine of web.config in prod de instellingen in de configuratie; je hebt de proxy-tag waarschijnlijk niet nodig.

<system.net>
    <defaultProxy useDefaultCredentials="true" >
        <proxy usesystemdefault="False"
               proxyaddress="http://<ProxyLocation>:<port>"
               bypassonlocal="True"
               autoDetect="False" />
    </defaultProxy>
</system.net>

Antwoord 5, autoriteit 2%

HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = new NetworkCredential("user", "password");
webRequest.Proxy.Credentials = new NetworkCredential("user", "password");

Het is gelukt.


Antwoord 6

Ik had een soortgelijk proxy-gerelateerd probleem. In mijn geval was het voldoende om toe te voegen:

webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");

Antwoord 7

Dacht om dit antwoord te schrijven omdat niets van bovenaf werkte & je wilt geen proxylocatie specificeren.

Als u httpClientgebruikt, overweeg dan dit.

HttpClientHandler handler = new HttpClientHandler();
IWebProxy proxy = WebRequest.GetSystemWebProxy();
proxy.Credentials = CredentialCache.DefaultCredentials;
handler.Proxy = proxy;
var client = new HttpClient(handler);
// your next steps...

En als je HttpWebRequestgebruikt:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri + _endpoint);
IWebProxy proxy = WebRequest.GetSystemWebProxy();
proxy.Credentials = CredentialCache.DefaultCredentials;
request.Proxy = proxy;

Soort referentie: https://medium.com/@siriphonnot/the-remote-server-returned-an-error-407-proxy-authentication-required-86ae489e401b

Other episodes