2011-06-02 153 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毫秒延迟到只有几毫秒。