繁体   English   中英

C# HttpWebResponse 超时不起作用

[英]C# HttpWebResponse Timeout doesn't work

我有 function 来检查网站是否可用。

    public bool ConnectionAvailable(string strServer)
    {
        try
        {
            HttpWebRequest reqFP = (HttpWebRequest)HttpWebRequest.Create(strServer);
            reqFP.Timeout = 10000;
            HttpWebResponse rspFP = (HttpWebResponse)reqFP.GetResponse();

            if (HttpStatusCode.OK == rspFP.StatusCode)
            {
                // HTTP = 200 - Internet connection available, server online
                rspFP.Close();
                return true;
            }
            else
            {
                // Other status - Server or connection not available
                rspFP.Close();
                return false;
            }
        }
        catch (WebException)
        {
            // Exception - connection not available
            return false;
        }
    }

这不是我的代码。 我在网上找到的。

问题是当某些网站不可用时。 我想等待 x 毫秒(在 reqFP.Timeout 中设置),然后 function 应该返回 false。 但是每次我必须等待大约 20 秒(即使我在“超时”中设置了 10 秒)。

你知道有什么问题吗?

PS:语言错误请见谅。

来自MSDN 文章

域名系统 (DNS) 查询最多可能需要 15 秒才能返回或超时。 如果您的请求包含需要解析的主机名,并且您将 Timeout 设置为小于 15 秒的值,则可能需要 15 秒或更长时间才能引发 WebException 以指示您的请求超时。

如果有可能是这样吗? 尝试理智的代码,但使用 IP 地址而不是主机名。 另外,当你在等待 20 秒后得到false时,你确定这是因为超时而不是因为服务器返回的不是“200”吗?

试试这个属性:ReadWriteTimeout

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM