2011-06-02 41 views
5

的禁用Expect100Continue標題爲HttpWebRequests出來我的WCF託管的客戶端,通過將以下的配置文件的設置部分顯著延遲:HttpWebRequest的介紹時,Expect100Continue頭被禁用

ServicePointManager.Expect100Continue=false 

我注意到客戶端在發送HTTP POST請求和包含實際有效負載的以下TCP數據包之間等待約150毫秒。

任何線索爲什麼會發生這種情況?這是意想不到的,因爲在禁用這個頭部時,我期望在初始請求之後立即發送有效載荷而沒有延遲。

+1

您要發佈多少數據?什麼是目標服務器規範 - 即。製作和版本?你可以得到一個wireshark跟蹤?這將有助於弄清楚發生了什麼。 – feroze 2011-06-03 02:25:44

回答

3

因此事實證明,.NET默認情況下使用Naggle算法來爲TCP效率分組分塊負載。這是造成延遲,以擺脫這種延遲,我們必須設置的:

ServicePointManager.UseNaggleAlgorithm=false.      

這改變了從150毫秒延遲到只有幾毫秒。