C#HTTP Web请求保持超时

Ben*_*Ben 11 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;
        }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 32

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

将您的代码更改为:

using (HttpWebResponse webresponse = (HttpWebResponse) myRequest.GetResponse())
{
    if (webresponse.StatusCode == HttpStatusCode.OK)
    {
        continue;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

看看是否有帮助.

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

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