Pregunta

Soy capaz de llamar a un servicio web de un proveedor de 3 ª parte de un programa de Windows formulario muy bien. Cuando intento llamar al mismo método de servicio web y web y misma dirección URL de un servicio web WCF me sale el siguiente error:

ExportValuationPolicyNumber:Exception=System.Net.WebException: Unable to connect to the remote server ---> 
System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly 
respond after a period of time, or established connection failed 
because connected host has failed to respond 66.77.241.76:80

   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.GetRequestStream()
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at TFBIC.RCT.WCFWebServices.ExpressLync.ValuationServiceWse.ExportValuationPolicyNumber(String PolicyNumber) in c:\Source\TFBIC.RCT.WCFWebServices\TFBIC.RCT.WCFWebServices\Web References\ExpressLync\Reference.cs:line 519
   at TFBIC.RCT.WCFWebServices.ValuationService.ExportValuationPolicyNumber(String PolicyNumber) in c:\Source\TFBIC.RCT.WCFWebServices\TFBIC.RCT.WCFWebServices\ValuationService.svc.cs:line 97

Estoy intentando escribir básicamente un envoltorio de WCF para el servicio proveedor asmx / WSE3. No nos pongamos punto de partida - pero Microsoft dice WCF puede llamar WSE3, pero sólo con SSL activado, y mi proveedor - créanlo o no - no se permite la conexión SSL. Así I'mn pegado a escribir el envoltorio para que pueda llamar desde BizTalk 2009. En este momento, estoy probando la envoltura a través de un programa de consola.

¿Qué puedo hacer incluso de depurar? He añadido EventLog traza antes y después del servicio WCF donde se llama al servicio asmx - así que sé que es donde está soplando (más el número de línea en el error anterior).

Tengo el siguiente en mi web.config:

<microsoft.web.services3>
        <diagnostics>
                <trace enabled="true" 
                           input="c:\inetpub\wwwroot\wsetraces\InputTrace.webinfo" 
                           output="c:\inetpub\wwwroot\wsetraces\OutputTrace.webinfo" />
                <detailedErrors enabled="true" />
        </diagnostics>
</microsoft.web.services3>

y me he dado el directorio acceso completo a todo el mundo - sin embargo, ningún rastro aparece allí.

¿Cuáles son algunas cosas que puedo buscar o intentar después de depurar esto?

En la teoría de resultados "ping" no debe importar, porque el sitio está trabajando desde el programa de Windows que forma la llama muy bien.

Sin embargo - esto es lo que muestra Ping y se ve un poco dudosa para mí:

C: \ Users \ uxnxw01> ping rct.msbexpress.net

Pinging rct.msbexpress.net [66.77.241.56] with 32 bytes of data:
Reply from 10.193.99.5: Destination net unreachable.
Reply from 10.193.99.5: Destination net unreachable.
Request timed out.
Reply from 10.193.99.5: Destination net unreachable.

Ping statistics for 66.77.241.56:
    Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),

Gracias,

Neal Walters


análisis WireShark

Lo hice correr Wireshark - publicado algunos resultados en comentarios a continuación. Sin embargo, después de leer más, no siempre dicen "destino inaccesible". Pero en el caso en el que está fallando, nunca consigo cualquier databack. Todavía estoy confundido qué hacer a continuación. He estado comparando los paquetes pero es lento y confuso. Por ejemplo, todavía no he encontrado la llave (una policyNum específica) que estoy pasando en el paquete de solicitud. También veo algunas declaraciones "destino inalcanzable" en la que trabajaba.

En el que funciona, nunca veo 66.77.241.76, sólo veo de representación de nuestra empresa. Pero no puedo ver nada en la configuración (o código) que contara WSE3 de usar o no usar el proxy.


Telnet resultados:

C:\Users\uxnxw01>telnet 66.77.241.56 80
Connecting To 66.77.241.56...Could not open connection to the host, on port 80:
Connect failed

C:\Users\uxnxw01>telnet 66.77.241.76 80
Connecting To 66.77.241.76...Could not open connection to the host, on port 80:
Connect failed

No estoy seguro de lo que esto prueba. Como he dicho, yo sin duda puede llamar al mismo servicio web desde un formulario de Windows llamando directamente a su interfaz WSE3. Yo sé que puedo llegar de esa manera.

Estoy pensando que las principales diferencias entre los dos programas es que se está ejecutando en un formulario de victorias y llamando WSE3 directamente. Que uno trabaja. El que falla es básicamente el 99% mismo código, publicado como un servicio WCF, por lo que se está ejecutando bajo IIS (en ese entonces un programa de consola llama al servicio / IIS WCF en mi máquina, que a su vez llama al servicio WSE3).

¿Hay alguna razón IIS no usaría el mismo proxy?

¿Fue útil?

Solución

Gracias a todos por encima de la ayuda - pero aquí está la respuesta verdadera:

valservice.Proxy = new System.Net.WebProxy ( " http: //10.192.xx.xx: 8080 ", true);

El servicio de WCF se ejecuta en IIS fue aparentemente no usar el mismo proxy, por lo que los ajustes manualmente en el código. Voy a publicar otra pregunta para ver si hay una manera de hacer esto en el archivo de configuración.

Otros consejos

Es posible que desee utilizar Wireshark para ver lo que está pasando con el tráfico de la red.

solicitudes de ping (paquetes ICMP) pueden estar desactivadas en el cortafuegos. Así que es perfectamente posible no obtener una respuesta ping de nuevo, mientras que ser capaz de acceder a la caja en puertos diferentes.

Trate de usar para conectarse a telnet 66.77.241.56 en el puerto 80 y ver si le da una respuesta.

telnet 66.77.241.56 80

Como alternativa, un tracerte a dicha dirección IP puede proporcionar alguna información más detallada para uno de sus administradores de red, ya que podría igualmente tener que ver con el enrutamiento de red o NAT.

tercera posibilidad es que puede que tenga que establecer explícitamente la propiedad Proxy en su instancia de cliente SOAP SoapHttpClientProtocol. WinForms recoger esto automáticamente, pero desde un servicio web / app este no es el caso.

Vea mis comentarios sobre los mensajes de otras personas también, pero además, en relación con el registro de diagnóstico, este es el XML que tengo en mi config para volcar un registro de seguimiento de WCF:

<configuration>

    <system.diagnostics>
        <sources>
            <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
                <listeners>
                    <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData= "MyService.svclog" />
                </listeners>
            </source>
        </sources>
    </system.diagnostics>

</configuration>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top