Solicitar paradas ServerXMLHTTP responder cuando envía una publicación

Síntomas

Cuando se envía una solicitud POST utilizando ServerXMLHTTPy la respuesta de un servidor HTTP/1.1 no contiene un encabezado de conexión y el servidor HTTP/1.1 mantiene la conexión activa después ofrece una respuesta a una solicitud HTTP, ServerXMLHTTP puede dejar de responder (se bloquea) hasta que expire el tiempo de espera, y puede recibir el siguiente mensaje de error:

error '80004005' de Msxml3.dll


Error no especificado

Causa

WinHTTP intenta leer más datos que en realidad se entregan en la conexión de socket.

Solución

Existe un hotfix disponible desde Microsoft. Sin embargo, esta revisión se diseñó para corregir únicamente el problema que se describe en este artículo. Aplíquela sólo a sistemas que experimenten este problema específico.

Si la revisión está disponible para su descarga, hay una sección de "Descarga de revisión disponible" en la parte superior de este artículo de Knowledge Base. Si esta sección no aparece, envíe una solicitud al servicio de atención al cliente y soporte técnico para obtener la revisión.

Nota: Si se producen problemas adicionales o si se requiere cualquier otra solución, será necesario crear una solicitud de revisión independiente. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no califican para esta revisión específica. Para obtener una lista completa de los números de teléfono de servicio al cliente de Microsoft o para crear una solicitud de servicio independiente, visite el siguiente sitio Web de Microsoft:Nota: El formulario de "Descarga de Hotfix disponible" muestra los idiomas para los que el Hotfix está disponible. Si no ve su idioma, es porque no hay una revisión para ese idioma. La versión en inglés de esta revisión debe tener los atributos de archivo siguientes o posteriores:

   Date           Time  Version    Size       File name     
-------------------------------------------------------
27-Jun-20001 12:38 8.10.8627 1,106,944 msxml3.dll
27-Jun-20001 12:36 8.10.8627 24,576 msxml3a.dll
27-Jun-20001 12:36 8.10.8627 44,032 msxml3r.dll
27-Jun-20001 12:36 6.0.2462.0 28,672 xmlinst.exe


Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

La pila HTTP que utiliza MSXML3 ServerXMLHTTP , WinHTTP, es una pila compatible con HTTP/1.0 con soporte para conexiones persistentes. ServerXMLHTTP utiliza un componente de automatización COM denominado WinHttpRequest que se basa en el núcleo de la interfaz de programación de aplicaciones (API) de WinHTTP Win32.


19.6.2 ("compatibilidad con las conexiones persistentes de HTTP/1.0") de la sección de la especificación HTTP/1.1 (RFC 2616) contiene el siguiente texto:

Las conexiones persistentes de HTTP/1.0 se negocian explícitamente como no son el comportamiento predeterminado.
Cuando un servidor HTTP/1.1 interactúa con un 1.0 cliente, debe especificar la respuesta a una solicitud del servidor si la conexión está cerrada o persistir después de que se entregue la respuesta.


WinHTTP admite conexiones persistentes, pero se supone que el servidor cerrará la conexión si la respuesta del servidor no incluye un encabezado Connection. Esto corresponde al comportamiento opuesto de un cliente HTTP/1.1, que se supone que la conexión se conserva a menos que explícitamente informado lo contrario con una conexión: encabezado de respuesta de cierre.


Además, el componente WinHttpRequest omite cualquier encabezado Content-Length en la respuesta. Lo hace porque, en ocasiones el valor que se incluye en el encabezado Content-Length es incorrecto, por lo que continúa WinHttpRequest leer datos de la respuesta de la conexión de socket TCP hasta que encuentra el final de la secuencia de respuesta. Sin embargo, si se mantiene la conexión, el valor Content-Length debe publicarse para que no se intenta leer más allá del final de los datos de respuesta. Dado que la conexión se conserva, ServerXMLHTTP deja de responder si WinHTTP intenta leer más datos que en realidad se entregan en la conexión de socket.
Propiedades

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

Comentarios