在.NET 3.5和4.0之间是否更改了HttpWebRequest.Timeout属性行为?文档似乎暗示如此:
超时是后续同步的毫秒数 使用GetResponse方法发出的请求等待响应,并且 GetRequestStream方法等待流。如果资源不是 在超时期限内返回,请求抛出WebException 将Status属性设置为WebExceptionStatus.Timeout。
.NET 4.0 doc在中间添加了这句话:
超时适用于整个请求和响应,而不是 单独调用GetRequestStream和GetResponse方法。
这似乎是一个相当大的变化。 “整个请求和响应”可能意味着发送请求和接收响应所花费的整个时间。这似乎与前一句相矛盾,因为等待响应流准备就绪可能很快 - 基本上只是服务器检索/准备响应的时间 - 但接收整个响应流可能需要很长时间。
有没有人比较3.5和4.0之间的这种行为?
答案 0 :(得分:1)
如果查看.net代码(您引用的msdn doc页面)上的代码示例,请求和响应是两个单独的操作,请求的超时操作将复制到响应。因此,如果默认值为100毫秒,则请求为100毫秒,响应为100毫秒,两者的经过时间均为100毫秒。
请注意,如果您预计长时间运行的请求或响应会考虑异步操作。