我看到来自https://stackoverflow.com/questions/6262547/webclient-timeout-error的帖子,它说默认超时时间是100秒。但我在如何更改.NET WebClient对象的超时时间的评论中看到以下内容:
默认超时时间为100秒。尽管它似乎运行了30秒。—Carter 2012年12月13日16:39
在我的程序中,超时时间总是大约20秒,有人知道原因吗?
我看到来自https://stackoverflow.com/questions/6262547/webclient-timeout-error的帖子,它说默认超时时间是100秒。但我在如何更改.NET WebClient对象的超时时间的评论中看到以下内容:
默认超时时间为100秒。尽管它似乎运行了30秒。—Carter 2012年12月13日16:39
在我的程序中,超时时间总是大约20秒,有人知道原因吗?
我准备了一个最小化案例来测试WebClient类的默认超时时间。
我在本地PC上发布了一个简单的网站,该网站在接收请求后等待300秒(足够长以使WebClient超时),然后返回响应。
我编写了一个简单的程序,使用WebClient对该站点发出请求,并报告发生了什么:
void Main()
{
Console.WriteLine("Starting request at " + DateTime.Now);
WebClient client = new WebClient();
try
{
string response = client.DownloadString("http://slowsite.local/");
Console.WriteLine("Response returned at " + DateTime.Now);
}
catch (Exception ex)
{
Console.WriteLine(ex.GetType() + " " + ex.Message + " at " + DateTime.Now);
}
}
WebClient在100秒后超时。程序生成以下输出:
Starting request at 8/1/2017 9:31:11 AM
System.Net.WebException The request was aborted: The operation has timed out. at 8/1/2017 9:32:51 AM
客户端测试程序针对 .NET Framework 4.6。
HttpWebRequest
上配置了什么样的超时时间。HttpWebRequest
上配置了什么超时时间。HttpWebRequest
等待响应头的部分。这由Timeout
属性控制,默认为100秒。ReadWriteTimeout
控制,默认为5分钟。但请注意,这不是接收所有数据的超时时间。只要在没有超过ReadWriteTimeout
的"静默期"内接收到一些新数据,请求就不会超时。
WebClient
/HttpWebRequest
超时都是无关紧要的。请参阅我的答案以获取更多详细信息。 - Paul Groke