簡體   English   中英

C# HttpWebResponse 超時不起作用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM