Une erreur se produit sur un client .NET qui consomme un service Web via un serveur proxy HTTP
Cet article vous aide à résoudre un problème où une erreur (la connexion sous-jacente a été fermée : Le nom distant n’a pas pu être résolu) se produit lorsque vous utilisez un client .NET pour consommer un service Web via un serveur proxy HTTP.
Version d’origine du produit : .NET Framework
Numéro de la base de connaissances d’origine : 318140
Symptômes
Lorsque vous utilisez un client .NET pour consommer un service Web via un serveur proxy HTTP, vous pouvez recevoir le message d’erreur suivant :
La connexion sous-jacente a été fermée : le nom distant n’a pas pu être résolu.
Cause
Il existe un serveur proxy HTTP entre le service Web et le client .NET, et les paramètres de proxy appropriés n’ont pas été configurés.
Résolution
Pour résoudre ce problème, fournissez les paramètres de configuration de proxy appropriés au client .NET.
Voici les paramètres par défaut dans le fichier Machine.config :
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "true"
/>
</defaultProxy>
</system.net>
</configuration>
Si les paramètres par défaut ne détectent pas automatiquement les paramètres du serveur proxy, définissez usessystemdefault
sur false, puis désignez explicitement le serveur proxy. Pour désigner explicitement le serveur proxy, utilisez le fichier Machine.config ou Web.config , ou spécifiez le serveur par programmation.
Pour spécifier le serveur proxy, définissez les paramètres de fichierMachine.config ou Web.config comme suit :
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "false"
proxyaddress="http://proxyserver"
bypassonlocal="true"
/>
</defaultProxy>
</system.net>
</configuration>
Pour modifier les paramètres par programmation à l’aide d’un WebProxy
objet, utilisez l’exemple de code suivant :
using System.Net;
com.someserver.somewebservice.someclass MyWebServiceClass = new com.someserver.somewebservice.someclass ();
IWebProxy proxyObject = new WebProxy ("http://myproxyserver:80", true);
MyWebServiceClass.Proxy = proxyObject;
MyWebServiceClass.MyWebMethod ();
Serveurs proxy qui nécessitent l’authentification NTLM
Pour définir l’authentification windows NT LAN Manager (NTLM) pour le serveur proxy, utilisez l’exemple de code suivant :
using System.Net;
WebProxy myProxy = new WebProxy ("http://proxyserver:port", true);
myProxy.Credentials = CredentialCache.DefaultCredentials;
FindServiceSoap myFindService = new FindServiceSoap ();
myFindService.Proxy = myProxy;
Vous pouvez également utiliser le proxy à l’échelle du système par défaut. Pour ce faire, utilisez les paramètres suivants dans le fichier de configuration :
<configuration>
<system.net>
<defaultProxy>
<proxy
proxyaddress = "http://proxyserver:80"
bypassonlocal = "true"
/>
</defaultProxy>
</system.net>
</configuration>
References
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour