0

.NET 3.5 和 4.0 之间的 HttpWebRequest.Timeout 属性行为是否发生了变化?该文档似乎暗示这样:

来自.NET 3.5 MSDN 文档

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

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

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

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

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

4

1 回答 1

1

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

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

于 2012-11-23T03:16:16.037 回答