2012-08-30 115 views
1
var strURL = "http://999.999.999.999"; // invalid IP-address 
System.Net.WebResponse objResponse = default(System.Net.WebResponse); 
System.Net.WebRequest objRequest = default(System.Net.WebRequest); 

objRequest = System.Net.HttpWebRequest.Create(strURL); 
objRequest.Timeout = 100; 
objResponse = objRequest.GetResponse(); 

System.IO.StreamReader sr = new System.IO.StreamReader(objResponse.GetResponseStream()); 
result = sr.ReadToEnd(); 

我看到螢火蟲的超時時間爲3000毫秒......不應該那樣!WebRequest.Timeout未按預期工作

+0

爲什麼不顯示Firebug的屏幕截圖?你看到了,但沒有人。 –

回答

0

根據http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout.aspx的毫秒數請求超時前等待。默認值爲100,000毫秒(100秒)。

+0

他將其設置爲100毫秒:'objRequest.Timeout = 100;' – Femaref

+0

複製粘貼從http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout.aspx – Guffa

+0

那並不是」解釋爲什麼它不會中止請求....有效的請求只需要90毫秒,所以它不是延遲問題。 – user131008

2

您的問題在於無效IP地址的預先請求解析。所有正常請求都正常超時。根據MSDN:

域名系統(DNS)查詢最多可能需要15秒才能返回或超時。如果您的請求包含需要解析的主機名,並且您將Timeout設置爲小於15秒的值,則可能需要15秒或更長時間纔會引發WebException,以指示請求超時。

確實,'999.999.999.999'不需要DNS查找,但Request對象必須變得困惑並需要一段時間來解決它。如果IP地址更改爲有效的URL:

var strURL = "http://www.myjunkinvalidurl.com"; 

或有效,運行IP:

var strURL = "http://134.170.188.221"; // microsoft.com 

或有效的,非功能IP:

var strURL = "http://123.123.123.123"; 

所有回來在115毫秒內(100毫秒超時),所以WebRequest的無效IP地址解析一定會出現問題,這對我來說在2300毫秒左右就會回來。保持IP有效,你應該沒問題。

0

timeout屬性將被設置爲毫秒。通過設置爲「100」,您的超時設置爲0.1秒(100毫秒)。嘗試設置爲更合理的設置,例如30秒(30,000毫秒),或者不顯式設置並保留爲默認100,000毫秒。

From MSDN