Pregunta

Tenemos una ASP.NET aplicación web que se ejecuta en IIS que utiliza la clase SoapHttpClientProtocol para hacer llamadas SOAP.En los últimos días varias máquinas con XP han comenzado a reportar errores de tiempo de espera cuando la fabricación de JABÓN de llamadas de servicios.

Seguimiento de la pila de una app de prueba:

System.Net.WebException: The operation has timed out
   at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
   at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at TestWS.localhost.Service1.HelloWorld() in C:\Prototypes\TestWS\Web References\localhost\Reference.cs:line 78
   at ASP.default_aspx.__Renderform1(HtmlTextWriter __w, Control parameterContainer) in c:\Inetpub\wwwroot\TestWS\Default.aspx:line 17

El uso de TCP/ Seguimiento y Wireshark podemos ver que el encabezado de la solicitud se envía pero no el contenido.Sin embargo, el contenido de longitud HTTP parámetro es correcto, es casi como si la secuencia de contenido no ha sido eliminado.

Tenemos la sospecha de una actualización de microsoft que ha causado este problema.Potencialmente KB970430, KB971737 y KB968389.El problema parece estar aislado en IIS 5.x (XP versión de IIS).

¿Fue útil?

Solución

ACTUALIZACIÓN:Esto resultó ser un problema con ESET antivirus que se ejecuta en el Servidor Web y la realización de on-the-fly comprobación de las conexiones HTTP desde el servidor web a un servidor SOAP.

Descripción Completa:Para el registro se trata de un defecto en el protocolo HTTP, manejo en .NET.El escenario es el siguiente:

El cliente envía el encabezado de HTTP POST:

POST /WS/Test.asmx HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.3603) 
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://testuri.org/HelloWorld"
Host: loadtest-app
Content-Length: 288
Expect: 100-continue
Connection: Keep-Alive

El contenido no es enviado por Esperar:100-Continuar.El servidor responde ahora:

HTTP/1.1 100 Continue

En este punto, el cliente no responde.Una solución es deshabilitar el 100-seguir que, esencialmente, las fuerzas de la solicitud de encabezado y contenido para ser enviado en un solo fragmento.Esto se puede hacer en la web.config con:

<system.net>
   <settings>
      <servicePointManager expect100Continue="false"/>
   </settings>
</system.net>

Sin embargo, si también nos interruptor del lado del cliente registro de seguimiento en la continuación de un protocolo de excepción que indica que el CR debe ser seguido por la LF en las cabeceras HTTP.Parece ser que algunos frágil código en el .Neto de la lógica de la red en algún lugar.Y para resumir este es sólo un problema con el ASP.NET en IIS 5.1 (la versión que corre en XP).

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