C#HTTP Web请求保持超时

时间:2010-01-03 09:19:05

标签: c# http httpwebrequest

我正在向一个可以访问的可用站点创建一个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;
        }

1 个答案:

答案 0 :(得分:31)

你没有关闭你的网络回复 - 如果你发现前几个请求有效,但之后却没有,那就是问题所在。它试图重用现有的服务器连接,但它不能,因为你还没有关闭响应。

将您的代码更改为:

using (HttpWebResponse webresponse = (HttpWebResponse) myRequest.GetResponse())
{
    if (webresponse.StatusCode == HttpStatusCode.OK)
    {
        continue;
    }
    ...
}

看看是否有帮助。

如果它对服务器的第一个请求失败了,那就不一样了。在这种情况下,请使用Wireshark查看网络级别的情况。

请注意,在上面的代码中,我还删除了字符串转换,以便直接比较状态代码。