web-dev-qa-db-fra.com

Le serveur distant a renvoyé une erreur: (407) authentification proxy requise

Je reçois cette erreur lorsque j'appelle un service Web:

"Le serveur distant a renvoyé une erreur: Authentification du proxy (407) requise".

Je reçois l'idée générale et je peux obtenir le code au travail en ajoutant

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

ou en utilisant DefaultCredentials dans le code. Mon problème est que l'appel au service Web fonctionne en production sans cela.

Il semble qu'il existe une solution sans code impliquant Machine.config, mais de quoi s'agit-il? Pour le moment, je ne peux pas accéder au fichier machine.config de la boîte de production pour voir à quoi cela ressemble. J'ai essayé de mettre à jour mon machine.config comme suit, mais j'obtiens toujours l'erreur 407.

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

Il suffit d'ajouter ceci à la configuration

<system.net>
    <defaultProxy useDefaultCredentials="true" >
    </defaultProxy>
</system.net>
128
Seçkin Durgay

Dans le code suivant, nous n'avons pas besoin de coder en dur les informations d'identification.

service.Proxy = WebRequest.DefaultWebProxy;
service.Credentials = System.Net.CredentialCache.DefaultCredentials; ;
service.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
52
Romil Kumar Jain

Vérifiez auprès de votre expert en pare-feu. Ils ouvrent le pare-feu pour les serveurs PROD. Il n’est donc pas nécessaire d’utiliser le proxy.

Merci votre astuce m'a aidé à résoudre mon problème:

Il a fallu définir les informations d'identification à deux endroits pour dépasser l'erreur 407:

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

et le tour est joué!

19
Werner du Toit

Probablement la machine ou web.config dans prod a les paramètres dans la configuration; vous n'aurez probablement pas besoin de la balise proxy.

<system.net>
    <defaultProxy useDefaultCredentials="true" >
        <proxy usesystemdefault="False"
               proxyaddress="http://<ProxyLocation>:<port>"
               bypassonlocal="True"
               autoDetect="False" />
    </defaultProxy>
</system.net>
6
Oscar Cabrero
HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest;

webRequest.Proxy = WebRequest.DefaultWebProxy;

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

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

C'est réussi.

3
mehmet emin

J'ai eu un problème similaire lié au proxy. Dans mon cas, il suffisait d'ajouter:

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