我的目标是在最短的时间内从多达6000个Url获得答案。它工作得非常好(5200个LAN地址为12秒),直到发生一些延迟。我需要帮助设置.NET HttpWebRequest超时
我的代码使用多达20个同步HttpWebRequest.BeginGetResponse与ThreadPool.RegisterWaitForSingleObject
超时处理。
然而,有些请求(多达4个请求中的4个)从来没有用第二个参数(timedOut)为真来触发TimeoutCallback函数,他们浪费了我宝贵时间的5分钟,直到它们碰到BeginGetResponseCallback函数,然后引发WebException。例外情况表示“操作达到了时间限制”,但由于例外信息是葡萄牙语(我的母语),我无法Google。
我不知道我是否可以将这个时间限制减少到20秒。任何人都知道?我已经尝试过:
<system.web>
<httpRuntime executionTimeout="20"/>
</system.web>
但是,当我将它作为控制台应用程序运行时,ASP.NET配置不起作用。我也试过:
myHttpWebRequest.Timeout = 20*1000;
和
ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), AsyncState, 20*1000, true);
没有成功。你可以帮我吗?
更新 什么,我想说的是有一个异步HTTP请求的4分可能的结果:
- 永远也达不到的回调函数 - >超时回调函数
- 河段和答案成功
- 到达并引发异常
- 延迟5分钟直到在回调函数内引发“时间限制”web异常
第四可能性是一个被延迟我的申请,我不知道如何缩短该延迟
更新 有没有一种可能性,即代替GetResponse
方法GetResponseStream
是谁造成超时?
谢谢,也许这就是解决方案。但因为我必须等待,直到再次出现问题来测试它。 – 2008-12-24 13:11:07