我正在向一个可以访问的可用站点创建一个Http Webrequest,但HTTP Web请求会保持超时。有什么理由说明为什么这段代码不应该超时呢?
我已尝试提升超时设置,但仍会继续超时。
Uri CameraUrl = new Uri("http://" + cfg_cameraIps[i]);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(CameraUrl);
myRequest.Timeout = 5000;
myRequest.Method = "HEAD";
try
{
HttpWebResponse webresponse;
webresponse = (HttpWebResponse)myRequest.GetResponse();
if (webresponse.StatusCode.ToString() == "OK")
{
continue;
}
答案 0 :(得分:31)
你没有关闭你的网络回复 - 如果你发现前几个请求有效,但之后却没有,那就是问题所在。它试图重用现有的服务器连接,但它不能,因为你还没有关闭响应。
将您的代码更改为:
using (HttpWebResponse webresponse = (HttpWebResponse) myRequest.GetResponse())
{
if (webresponse.StatusCode == HttpStatusCode.OK)
{
continue;
}
...
}
看看是否有帮助。
如果它对服务器的第一个请求失败了,那就不一样了。在这种情况下,请使用Wireshark查看网络级别的情况。
请注意,在上面的代码中,我还删除了字符串转换,以便直接比较状态代码。