我需要设置.NET HttpWebRequest超时的帮助
我的目标是在最短的时间内从多达6000个URL获得答案。它工作得非常好(5200个LAN地址为12秒),直到出现一些延迟 我的代码使用多达20个HttpWebRequest.BeginGetResponse与我需要设置.NET HttpWebRequest超时的帮助,.net,timeout,webrequest,.net,Timeout,Webrequest,我的目标是在最短的时间内从多达6000个URL获得答案。它工作得非常好(5200个LAN地址为12秒),直到出现一些延迟 我的代码使用多达20个HttpWebRequest.BeginGetResponse与ThreadPool.RegisterWaitForSingleObject同时执行超时处理 但是,有些请求(高达5000分之4)在第二个参数(timedOut)为true时从未命中TimeoutCallback函数,它们浪费了我宝贵的5分钟时间,直到它们命中BeginGetResponse
ThreadPool.RegisterWaitForSingleObject同时执行超时处理
但是,有些请求(高达5000分之4)在第二个参数(timedOut)为true时从未命中TimeoutCallback函数,它们浪费了我宝贵的5分钟时间,直到它们命中BeginGetResponseCallback函数,然后引发WebException。异常显示类似于“操作已达到时间限制”,但由于异常消息是葡萄牙语(我的母语),我无法用谷歌搜索它
例如,我想知道我是否可以把这个时间限制缩短到20秒。有人知道怎么做吗?我已经试过了:
<system.web>
<httpRuntime executionTimeout="20"/>
</system.web>
及
没有成功。你能帮我吗
更新
我想说的是,异步HTTP请求有4种可能的结果:
永远不要到达回调函数->超时回调函数
成功到达并回答
到达并引发异常
延迟5分钟,直到在回调函数中引发“time limit”web异常
第四种可能是延迟我的申请,我不知道如何缩短延迟时间
更新
是否有可能是方法GetResponseStream
而不是GetResponse
导致了超时?听起来您需要设置请求对象的ReadWriteTimeout属性
.Timeout=尝试建立连接所花费的时间(不包括查找时间)。ReadWriteTimeout=在建立连接后尝试读取或写入数据所花费的时间谢谢,也许这就是解决方案。但是我必须等到问题再次出现才能测试它。你在下面帖子中的评论正好击中了它的头部。异步web请求忽略超时属性。因此,除非您滚动了自己的异步超时事件,否则web请求的超时将基于ReadWriteTimeOut而不是webrequest超时。可以在标准MS配置文件中设置默认值吗?
myHttpWebRequest.Timeout = 20*1000;
ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), AsyncState, 20*1000, true);