HttpWebRequest.Timeout .NET 3.5和4.0之间的属性行为更改?

时间:2012-11-22 19:24:35

标签: .net .net-4.0 httpwebrequest

在.NET 3.5和4.0之间是否更改了HttpWebRequest.Timeout属性行为?文档似乎暗示如此:

来自.NET 3.5 MSDN doc

  

超时是后续同步的毫秒数   使用GetResponse方法发出的请求等待响应,并且   GetRequestStream方法等待流。如果资源不是   在超时期限内返回,请求抛出WebException   将Status属性设置为WebExceptionStatus.Timeout。

.NET 4.0 doc在中间添加了这句话:

  

超时适用于整个请求和响应,而不是   单独调用GetRequestStream和GetResponse方法。

这似乎是一个相当大的变化。 “整个请求和响应”可能意味着发送请求和接收响应所花费的整个时间。这似乎与前一句相矛盾,因为等待响应流准备就绪可能很快 - 基本上只是服务器检索/准备响应的时间 - 但接收整个响应流可能需要很长时间。

有没有人比较3.5和4.0之间的这种行为?

1 个答案:

答案 0 :(得分:1)

如果查看.net代码(您引用的msdn doc页面)上的代码示例,请求和响应是两个单独的操作,请求的超时操作将复制到响应。因此,如果默认值为100毫秒,则请求为100毫秒,响应为100毫秒,两者的经过时间均为100毫秒。

请注意,如果您预计长时间运行的请求或响应会考虑异步操作。