PRB: Error en cliente .NET que consume un servicio Web a través de un servidor proxy HTTP

Síntomas

Nota: El espacio de nombres de biblioteca de clases de.NET Framework siguiente se hace referencia en este artículo:

System.Net

Cuando se utiliza un cliente .NET para consumir un servicio Web a través de un servidor proxy HTTP, puede recibir 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 de .NET y el servidor proxy adecuada no se ha configurado.

Solución

Para resolver este problema, proporcione las opciones de configuración de proxy correcta al cliente. NET.

Más información

Los siguientes son la configuración predeterminada 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, usessystemdefault se establece en false y, a continuación, designar explícitamente el servidor proxy. Para designar el servidor proxy de forma explícita, utilice el archivo Machine.config o Web.config o especificar el servidor mediante programación.

Para especificar el servidor proxy, establezca la configuración del archivo Machine.config o Web.config como sigue:
<configuration>   <system.net>
<defaultProxy>
<proxy
usesystemdefault = "false"
proxyaddress="http://proxyserver"
bypassonlocal="true"
/>
</defaultProxy>
</system.net>
</configuration>


Para cambiar la configuración mediante programación utilizando el objeto WebProxy , utilice el siguiente código de ejemplo:
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 NTML del servidor proxy, utilice el siguiente código de ejemplo:
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 utilizar el proxy para todo el sistema como predeterminada. Para ello, utilice la siguiente configuración en el archivo de configuración:
<configuration>    <system.net> 
<defaultProxy>
<proxy
proxyaddress = "http://proxyserver:80"
bypassonlocal = "true" />
</defaultProxy>
</system.net>
</configuration>

Referencias

Para obtener más información, consulte los siguientes sitios Web de Microsoft Developer Network (MSDN):Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

307220 cómo configurar a un cliente de servicios Web XML utilizando el.NET Framework para trabajar con un servidor proxy

Propiedades

Id. de artículo: 318140 - Última revisión: 17 ene. 2017 - Revisión: 1

Microsoft .NET Framework 1.0, Microsoft .NET Framework 1.1, Microsoft ASP.NET 1.0, Microsoft ASP.NET 1.1

Comentarios