对于异步调用 HttpWebRequest 的请求方法,如BeginGetResponse,该Timeout
属性不被注意。在我的机器上使用此方法完成的 HTTP 调用似乎仍然有一个默认超时,大约为 20 秒。这是从哪里来的?此超时配置在什么级别,我可以在哪里/是否可以更改它?
在我的实验中,我将地址 www.stackoverflow.com:9999 配置为代理服务器以引发超时。
对于异步调用 HttpWebRequest 的请求方法,如BeginGetResponse,该Timeout
属性不被注意。在我的机器上使用此方法完成的 HTTP 调用似乎仍然有一个默认超时,大约为 20 秒。这是从哪里来的?此超时配置在什么级别,我可以在哪里/是否可以更改它?
在我的实验中,我将地址 www.stackoverflow.com:9999 配置为代理服务器以引发超时。
与往常一样,检查文档http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout.aspx
Timeout 属性对使用BeginGetResponse或BeginGetRequestStream方法发出的异步请求没有影响。
编辑: http: //msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse.aspx有一条重要信息:
当您在应用程序中启用网络跟踪时,此成员会输出跟踪信息。有关详细信息,请参阅网络跟踪。
也许您可以尝试一下并弄清楚发生了什么。此外,HttpRequest 中没有与 20secs 值相关的设置,因此它可能是特定于操作系统/驱动程序/DNS 的。