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