Tengo una aplicación de cliente .NET llamando a mi servicio web .NET que a su vez llama a un servicio web de terceros, por ejemplo, en 'www.foo.com'.Causa de excepción "System.Net.WebException: ¿No se pudo resolver el nombre remoto"?
.NET Client -> 'My Web Service' -> 'Third Party Web Service'
De Visual Studio 2008, todo esto funciona bien, es decir, estoy corriendo 'Mi servicio web' en la que se pide localhost:someport
con éxito el 'servicio de terceros Web'.
Luego publiqué 'Mi servicio web' en un cuadro de Windows 2003 Server. Ahora cuando 'Mi servicio web' llama al 'Servicio web de terceros' obtengo la excepción,
"System.Net.WebException: El nombre remoto no se pudo resolver: 'www.foo.com'."
He intentado lo siguiente:
En el servidor donde desplegué 'Mi Web Service', abrí Internet Explorer y entré en la dirección de servicio web 'http://www.foo.com/somewebservice.asmx'. Esto fue un éxito ya que se mostró la lista de métodos de servicio web disponibles.
En el archivo
web.config
de 'Mi servicio web', modifiqué la URL del 'Servicio Web de terceros' del nombre del sitio web a su dirección IP. Esto falló con la excepción, "System.Net.Sockets.SocketException: Una operación de socket era intentada en una red inalcanzable".Luego escribí un arnés de prueba de Windows Forms simple para llamar al 'Servicio web de terceros'. Ejecuté este arnés de prueba en el servidor y llamó al 'Servicio web de terceros' con éxito.
Probé un servicio web de terceros diferente que ofrecía el mismo comportamiento que en 1, 2 y 3 anteriores.
Finalmente agregué la dirección IP al archivo "hosts" en el servidor pero recibí el mismo error "El nombre remoto no se pudo resolver", ¡aunque esta vez mucho más rápido! Si se trataba de un problema de DNS, entonces no esperaría que mis pruebas 1 y 3 funcionaran.
¿Cómo puedo solucionar este problema?
Esto probablemente se deba a la configuración de seguridad asociada a su sitio web/servicio en IIS en el servidor. Algo en esos ajustes le impide llamar a otros servidores. Debería intentar publicar esto en ServerFault también. – BBlake
¿Tiene servidor ISA o algunos servidores de seguridad o servidores proxy? – rahul
Al final fue un problema de servidor proxy. El mensaje de excepción fue una pista falsa. Para solucionarlo creé una instancia de WebProxy usando la dirección IP y el puerto de nuestro servidor proxy: WebProxy proxy = new WebProxy (proxyServerIPAddress, Convert.ToInt32 (proxyServerPort)); myService.Proxy = proxy; –