2
我們使用HttpWebRequest對象在應用程序的服務器和客戶端部分之間交換數據。當服務器的IP無法到達或無效(發生這種情況時,發生應該發生)客戶端要麼停止等待3秒後(這是我設置的超時),要麼等待一分鐘,這取決於它運行在哪臺電腦上! 代碼如下:.NET HttpWebRequest超時在某些計算機上顯然被忽略
HttpWebRequest webRequest = null;
WebResponse webResponse = null;
webRequest = (HttpWebRequest)WebRequest.Create(serverURL);
webRequest.Timeout = 1000 * 3; //3 seconds
webRequest.ReadWriteTimeout = webRequest.Timeout;
webRequest.AllowWriteStreamBuffering = true;
//Adding headers here; code removed
webRequest.Proxy = null;
webResponse = webRequest.GetResponse();
繼發出請求更快的意見就是我的網站和其他人發現,我還設置了ReadWriteTimeout屬性和設置代理服務器爲null。 雖然它在我自己的計算機和其他人已經嘗試過的3秒後正確停止,但在大約40秒後它不會停止。 我再說一遍,如果它試圖連接到無效的地址(如我們的子網內不存在的IP),並且「使用正確的IP」不是一個可接受的解決方案(我可以解釋爲什麼,但我認爲這將脫離主題)。如果它連接到一個確實存在的IP,那麼數據交換就像它應該的那樣快。
有沒有人看過類似的東西?
實際上已經測量這個40秒了嗎?你沒有達到15秒的DNS超時,你是在[備註]中列出的[超時屬性](http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout.aspx) –
我建議打開'System.Net'的跟蹤並檢查日誌。看到這篇文章http://blogs.msdn.com/b/dgorti/archive/2005/09/18/471003.aspx –
確實已經測量了40+秒。我讀過DNS超時可能是「15或更多」秒,但我想這並不能免除它。有沒有辦法覆蓋它? – Indridius