C#HttpWebResponse超时不起作用

时间:2011-06-09 15:06:03

标签: c# timeout httpwebresponse

我有检查网站是否可用的功能。

    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 miliseconds(在reqFP.Timeout中设置),然后函数应该返回false。 但每次我必须等待~20秒(即使我在“超时”中设置了10秒)。

你知道出了什么问题吗?

PS:对不起语言错误。

2 个答案:

答案 0 :(得分:3)

来自MSDN article

  

域名系统(DNS)查询可以   最多需要15秒才能返回或   超时。如果您的请求包含   需要解决的主机名和   您将超时设置为小于的值   15秒,可能需要15秒或   抛出WebException之前的更多内容   表示您的请求超时。

如果有可能的话?尝试使用合理的代码但使用IP地址而不是主机名。 此外,当您在等待20秒后得到false时,您确定是因为超时而不是因为服务器返回了“200”以外的其他内容吗?

答案 1 :(得分:0)

试试这个属性:ReadWriteTimeout