我有检查网站是否可用的功能。
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:对不起语言错误。
答案 0 :(得分:3)
来自MSDN article:
域名系统(DNS)查询可以 最多需要15秒才能返回或 超时。如果您的请求包含 需要解决的主机名和 您将超时设置为小于的值 15秒,可能需要15秒或 抛出WebException之前的更多内容 表示您的请求超时。
如果有可能的话?尝试使用合理的代码但使用IP地址而不是主机名。
此外,当您在等待20秒后得到false
时,您确定是因为超时而不是因为服务器返回了“200”以外的其他内容吗?
答案 1 :(得分:0)
试试这个属性:ReadWriteTimeout