[英]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.