HttpWebRequest - 操作已超时

4
我正在尝试使用HttpWebRequest调用一个网页,但是出现了“操作超时错误”。
string sURL = "http://localhost:53667/MyPage.aspx";

WebRequest wrGETURL = WebRequest.Create(sURL);
wrGETURL.Timeout = 5000;
System.Net.ServicePointManager.DefaultConnectionLimit = 5000;

var r = wrGETURL.GetResponse();
r.Close();
wrGETURL.Abort();

正如您所看到的,我添加了DefaultConnectionLimit属性,按照其他线程的建议关闭了响应,但似乎还是不行。我做错了什么?

编辑:

当我使用来自http://support.microsoft.com/kb/307023的完整示例,在Visual C#中将其作为控制台应用程序运行/调试时,它不会超时。但是当我将此程序设置为在Windows任务计划程序上运行时,它会超时。


2
你确定目标站点正在运行吗? - Ondrej Tucny
在浏览器中输入URL可以工作吗?没有页面呢? - rene
是的,网站正在运行,在浏览器中运行良好。 - Rivka
1
你检查过防火墙是否会阻止从计划任务调用的.exe文件的出站连接吗? - ElvisLives
控制面板\系统和安全\Windows 防火墙。您可以在测试或为该 exe 制定规则时完全关闭它一秒钟。 - ElvisLives
关闭了它,创建了一个规则,但没有任何改变。请注意,在同一台机器上,从Visual Studio运行时可以正常工作。 - Rivka
2个回答

1

对于这样一个简单的操作,使用WebClient来运行它。

它要简单得多,并且出现问题的可能性比WebRequest小得多。此外,您是否尝试从Visual Studio之外的同一台机器上运行它?

该站点是由cassini、iis express、iis 6、iis 7等托管的吗?其中一些需要特殊设置才能允许远程连接,而有些则根本不允许远程连接。

IIS Express需要特殊处理-IIS Express enable external request

Cassini根本无法做到这一点-https://serverfault.com/questions/82899/can-i-access-cassini-from-a-remote-machine


0
尝试添加以下代码:

ServicePointManager.DefaultConnectionLimit = 500;

并发连接可能会导致超时错误。在我的情况下,这个方法很有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接