我有功能来检查网站是否可用。
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中设置),那么函数应该返回false。但每次我都要等待大约20秒(即使我在“超时”中设置了10秒)。
你知道哪里出了问题吗?
附言:对于语言错误,我很抱歉。
发布于 2011-06-09 23:11:56
域名系统查询可能需要15秒才能返回或超时。如果您的请求包含需要解析的主机名,并且您将Timeout设置为小于15秒的值,则可能需要15秒或更长时间才会抛出WebException来指示您的请求超时。
如果有可能是这样的话?尝试使用合理的代码,但使用IP地址而不是主机名。另外,当你在等待20秒后得到false,你确定这是因为超时,而不是因为服务器返回了"200“以外的东西吗?
发布于 2011-06-10 00:22:26
尝试此属性: ReadWriteTimeout
https://stackoverflow.com/questions/6295017
复制相似问题