Error en un cliente .NET que consume un servicio web a través de un servidor proxy HTTP
Este artículo le ayuda a resolver un problema en el que se produce un error (se cerró la conexión subyacente: no se pudo resolver el nombre remoto) cuando se usa un cliente .NET para consumir un servicio web a través de un servidor proxy HTTP.
Versión original del producto: .NET Framework
Número de KB original: 318140
Síntomas
Cuando se usa un cliente .NET para consumir un servicio web a través de un servidor proxy HTTP, es posible que reciba el siguiente mensaje de error:
Se cerró la conexión subyacente: no se pudo resolver el nombre remoto.
Causa
Existe un servidor proxy HTTP entre el servicio web y el cliente .NET, y no se ha configurado la configuración de proxy adecuada.
Solución
Para resolver este problema, proporcione los valores de configuración de proxy adecuados al cliente de .NET.
A continuación se muestran los valores predeterminados en el archivo Machine.config :
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "true"
/>
</defaultProxy>
</system.net>
</configuration>
Si la configuración predeterminada no detecta automáticamente la configuración del servidor proxy, establezca en usessystemdefault
false y, a continuación, designe explícitamente el servidor proxy. Para designar explícitamente el servidor proxy, use el archivo Machine.config o Web.config o especifique el servidor mediante programación.
Para especificar el servidor proxy, establezca los valores de archivoMachine.config o Web.config como se indica a continuación:
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault = "false"
proxyaddress="http://proxyserver"
bypassonlocal="true"
/>
</defaultProxy>
</system.net>
</configuration>
Para cambiar la configuración mediante programación mediante un WebProxy
objeto , use el código de ejemplo siguiente:
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 ();
Servidores proxy que requieren autenticación NTLM
Para establecer la autenticación del Administrador de LAN de Windows NT (NTLM) para el servidor proxy, use el código de ejemplo siguiente:
using System.Net;
WebProxy myProxy = new WebProxy ("http://proxyserver:port", true);
myProxy.Credentials = CredentialCache.DefaultCredentials;
FindServiceSoap myFindService = new FindServiceSoap ();
myFindService.Proxy = myProxy;
También puede usar el proxy de todo el sistema de forma predeterminada. Para ello, use los valores siguientes en el archivo de configuración:
<configuration>
<system.net>
<defaultProxy>
<proxy
proxyaddress = "http://proxyserver:80"
bypassonlocal = "true"
/>
</defaultProxy>
</system.net>
</configuration>
Referencias
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de