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();

我通过firebug看到的超时是3000毫秒……不应该是这样的!

4

3 回答 3

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有效,你应该没问题。

于 2014-05-21T03:17:47.537 回答
0

超时属性将设置为毫秒。通过设置为“100”,您的超时设置为 0.1 秒(100 毫秒)。尝试设置为更合理的值,例如 30 秒(30,000 毫秒),或者只是不明确设置并保留默认的 100,000 毫秒。

来自 MSDN

于 2017-09-28T15:21:18.387 回答
-2

根据http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout.aspx请求超时前等待的毫秒数。默认值为 100,000 毫秒(100 秒)。

于 2012-08-30T16:40:42.237 回答