2009-09-11 38 views
7

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:

  1. 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.

  2. 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".

  3. 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.

  4. Probé un servicio web de terceros diferente que ofrecía el mismo comportamiento que en 1, 2 y 3 anteriores.

  5. 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?

+0

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

+0

¿Tiene servidor ISA o algunos servidores de seguridad o servidores proxy? – rahul

+2

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; –

Respuesta

7

Desde comentario de Mark a su propia pregunta:

que era una cuestión servidor proxy en el final. El mensaje de excepción fue una pista falsa. Para solucionarlo he creado una instancia de WebProxy utilizando la dirección IP y el puerto de nuestro servidor proxy:

WebProxy proxy = new WebProxy(proxyServerIPAddress, Convert.ToInt32(proxyServerPort));  
myService.Proxy = proxy; 
0

Creo que esto también podría indicar un problema de DNS, ya que estoy tentativamente concluir acerca de mi propia experiencia reciente con este excepción. En mi experiencia (reciente), la excepción dejó de ser arrojada (y registrada por mi aplicación) 'por sí sola'.

5
<system.net> 
     <defaultProxy> 
      <proxy 
       usesystemdefault = "false" 
     /> 
     </defaultProxy> 
    </system.net> 

cancelará el ajuste de

0

de proxy Tuvimos algún problema con el dos aplicaciones que se ejecutan en un servidor de problema.El error solo ocurriría cuando se ejecutaría bajo SQL Job Agent bajo un cronograma, por lo que era muy difícil aislar el problema. Resultó que la gente de la red tenía problemas para migrar del firewall ISA al firewall de Forefront. La solución de Iamtonyzhou para usar "usesystemdefault" en el app.config funcionó muy bien como solución alternativa hasta que se resuelven los problemas del firewall de red. No creo que alguna vez instanciara un objeto WebProxy porque nuestras configuraciones de firewall siempre están sujetas a cambios.

Cuestiones relacionadas