第三个 运行 中的 GetResponse() 超时错误
A timed out Error on GetResponse() in third run
我有一个线程 运行 每 60 秒定期发送一次。此线程正在从网络 url 获得响应。一切都很好,直到第三次 运行。它不再工作并显示此错误:
"The operation has timed out"
这是我在第 5 行发现的代码和错误。谢谢!
string sURL;
sURL = "http://www.something.com";
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sURL);
HttpWebResponse http = (HttpWebResponse)wrGETURL.GetResponse();
Stream objStream = null;
objStream = http.GetResponseStream();
您可能要考虑使用 using
语句:
string sURL;
sURL = "http://www.something.com";
using (WebRequest wrGETURL = WebRequest.Create(sURL))
{
using (HttpWebResponse http = (HttpWebResponse)wrGETURL.GetResponse())
{
Stream objStream = http.GetResponseStream();
//etc.
}
}
它保证 Dispose
方法被调用,即使发生异常也是如此。 (https://msdn.microsoft.com/en-us/library/yh598w02.aspx)
超时的原因可能是您的服务器有 x 个同时请求的限制。由于处置不当,连接将保持打开状态的时间比需要的时间更长。尽管垃圾收集器会为您修复此问题,但时机往往为时已晚。
这就是为什么我总是建议通过 using
为所有实现 IDisposable
的对象调用 Dispose
。当您在循环或低内存(低资源)系统中使用这些对象时尤其如此。
不过要小心流,它们倾向于使用装饰器模式,并且可能会对其所有 "child" 对象调用 Dispose
。
通常适用于:
- 图形对象
- 数据库连接
- TCP/IP(http 等)连接数
- 文件系统访问
- 带有本机组件的代码,例如 USB 驱动程序、网络摄像头等
- 流对象
幻数“3”来自here:
The maximum number of concurrent connections allowed by a ServicePoint object. The default connection limit is 10 for ASP.NET hosted applications and 2 for all others.
我有一个线程 运行 每 60 秒定期发送一次。此线程正在从网络 url 获得响应。一切都很好,直到第三次 运行。它不再工作并显示此错误:
"The operation has timed out"
这是我在第 5 行发现的代码和错误。谢谢!
string sURL;
sURL = "http://www.something.com";
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sURL);
HttpWebResponse http = (HttpWebResponse)wrGETURL.GetResponse();
Stream objStream = null;
objStream = http.GetResponseStream();
您可能要考虑使用 using
语句:
string sURL;
sURL = "http://www.something.com";
using (WebRequest wrGETURL = WebRequest.Create(sURL))
{
using (HttpWebResponse http = (HttpWebResponse)wrGETURL.GetResponse())
{
Stream objStream = http.GetResponseStream();
//etc.
}
}
它保证 Dispose
方法被调用,即使发生异常也是如此。 (https://msdn.microsoft.com/en-us/library/yh598w02.aspx)
超时的原因可能是您的服务器有 x 个同时请求的限制。由于处置不当,连接将保持打开状态的时间比需要的时间更长。尽管垃圾收集器会为您修复此问题,但时机往往为时已晚。
这就是为什么我总是建议通过 using
为所有实现 IDisposable
的对象调用 Dispose
。当您在循环或低内存(低资源)系统中使用这些对象时尤其如此。
不过要小心流,它们倾向于使用装饰器模式,并且可能会对其所有 "child" 对象调用 Dispose
。
通常适用于:
- 图形对象
- 数据库连接
- TCP/IP(http 等)连接数
- 文件系统访问
- 带有本机组件的代码,例如 USB 驱动程序、网络摄像头等
- 流对象
幻数“3”来自here:
The maximum number of concurrent connections allowed by a ServicePoint object. The default connection limit is 10 for ASP.NET hosted applications and 2 for all others.