HttpWebRequest вносит значительную задержку, когда заголовок Expect100Continue отключен - PullRequest
5 голосов
/ 03 июня 2011

При отключении заголовка Expect100Continue для HttpWebRequests, исходящих из моего размещенного клиента WCF, добавив в раздел настроек файла конфигурации следующее:

ServicePointManager.Expect100Continue=false 

Я заметил, что клиент ожидает около 150 миллисекундмежду отправкой HTTP POST-запроса и следующим TCP-пакетом, который содержит фактическую полезную нагрузку.

Любая подсказка, почему это может происходить?Это неожиданно, потому что при отключении этого заголовка я ожидаю, что полезная нагрузка будет отправлена ​​сразу после первоначального запроса без задержки.

1 Ответ

3 голосов
/ 07 июня 2011

Таким образом, получается, что .NET по умолчанию использует алгоритм Naggle для группировки полезной нагрузки по частям для эффективности TCP.Это вызывало задержку, чтобы избавиться от этой задержки, которую мы должны были установить:

ServicePointManager.UseNaggleAlgorithm=false.                       

Это изменяет задержку с 150 миллисекунд до нескольких миллисекунд.

...