某些计算机上显然忽略了.NET HttpWebRequest超时

时间:2011-08-30 12:40:14

标签: .net httpwebrequest timeout

我们使用HttpWebRequest对象在应用程序的服务器和客户端部分之间交换数据。当服务器的IP无法到达或无效时(发生了这种情况,应该发生),客户端要么在3秒后停止等待(这是我设置的超时),要么等待最多一分钟,取决于它运行的是哪台计算机! 代码如下:

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属性并将Proxy设置为null。 虽然它在我自己的计算机和其他人已经尝试过3秒后正确停止,但在其他一些计算机上它会在大约40秒后停止。 我再说一遍,如果它试图连接到无效地址,例如我们子网中不存在的IP,并且“使用正确的IP”是不可接受的,会发生这种情况解决方案(我可以解释为什么,但我认为这将是主题)。如果它连接到确实存在的IP,那么数据交换就像它应该的那样快。

有没有人见过类似的东西?

1 个答案:

答案 0 :(得分:0)

我不知道为什么会发生这种情况,但如果您有IP(不是域名),我认为您可以使用ping作为解决方法:

Console.WriteLine(new Ping().Send(IPAddress.Parse(ipAddress)).Status);