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 任务计划程序上运行时,它确实超时。

4

2 回答 2

1

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

它的复杂性要小得多,并且它成为特定于WebRequest该问题的可能性较小。你也试过在 Visual Studio 之外的同一台机器上运行它吗?

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

IIS Express 需要特殊的工作——IIS Express 启用外部请求

卡西尼根本无法做到 - https://serverfault.com/questions/82899/can-i-access-cassini-from-a-remote-machine

于 2012-12-21T13:29:38.970 回答
0

尝试添加此代码:

ServicePointManager.DefaultConnectionLimit = 500;

并发连接可能会导致超时错误。就我而言,这很好用。

于 2015-08-30T21:38:19.430 回答