2011-06-02 11 views
5

Si se desactiva la cabecera Expect100Continue para HttpWebRequests saliendo de mi WCF alojado cliente, añadiendo lo siguiente a la sección de configuración del archivo de configuración:HttpWebRequest introduce latencia significativa cuando la cabecera Expect100Continue se desactiva

ServicePointManager.Expect100Continue=false 

Noté que el cliente espera aproximadamente 150 milisegundos entre el envío de la solicitud HTTP POST y el siguiente paquete TCP que contiene la carga real.

¿Alguna pista de por qué esto podría estar pasando? Es inesperado porque al deshabilitar este encabezado espero que la carga se envíe inmediatamente después de la solicitud inicial sin latencia.

+1

¿Cuántos datos está publicando? ¿Cuál es la especificación del servidor de destino? marca y versión? ¿Puedes obtener un rastro de wireshark? Eso ayudaría a descubrir lo que está sucediendo. – feroze

Respuesta

3

Resulta que .NET utiliza de forma predeterminada el Algoritmo Naggle para agrupar la carga útil fragmentada para la eficacia del TCP. Esta fue la causa de la latencia, para deshacerse de esta latencia tuvimos que establecer:

ServicePointManager.UseNaggleAlgorithm=false.      

Esto cambia la latencia de 150 milisegundos a unos pocos milisegundos.

Cuestiones relacionadas