首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HttpWebRequest/Invoke-WebRequest请求的最大时间?

使用HttpWebRequest/Invoke-WebRequest请求的最大时间?
EN

Stack Overflow用户
提问于 2017-11-24 21:51:47
回答 1查看 1.9K关注 0票数 2

我使用了System.Net.HttpWebRequest和Invoke-WebRequest (我知道它下面是相同的代码),并且在以下场景中都给出了500的状态:

代码语言:javascript
复制
$response = Invoke-WebRequest 'https://httpstat.us/200?sleep=270000' -TimeoutSec 360000

这怎么可能呢?httpstat.us显然被设置为只等待4.5min。超时时间远远超过了这个值,但我得到的只是:

Invoke-WebRequest : 500 -请求超时。web服务器未能在指定的时间内响应。一行:1字符:13+ $response = Invoke-WebRequest 'https://httpstat.us/200?sleep=270000‘.+~+ CategoryInfo : InvalidOperation:(System.Net.HttpWebRequest:HttpWebRequest) Invoke-WebRequest,WebExc eption + FullyQualifiedErrorId : WebCmdletWebResponseException,CategoryInfo

在我看来,请求有一个最大的超时时间(大约3-4分钟)。没人知道该怎么做?

我已经设置了这个场景,因为我有一个网站,我需要测试,有一个很长的响应时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-25 03:23:17

布鲁比在关于这个问题的评论中提供了一个关键的指针:

https://httpstat.us 本身意外地超时,因为在本文编写时,实际E 110max。睡眠时间似乎是3分钟。和50秒 (230秒,即ms,作为查询字符串:?sleep=230000的一部分),而不是5分钟。记录在案。

?sleep=270000 - 4.5分钟。-因此,价值过高。

因此,Invoke-WebRequest在这里是无可指责的--它的-TimeoutSecs值从未起作用,甚至完全忽略-TimeoutSecs (即根本不指定超时)也会产生相同的结果:

代码语言:javascript
复制
PS> (Measure-Command { 
      Invoke-WebRequest https://httpstat.us/200?sleep=270000  2>&1 | Out-Default 
     }).TotalSeconds

Invoke-WebRequest : 500 - The request timed out. ...
...
230.57306

更新:作为事实证明 Azure - -在本文撰写时, https://httpstat.usis 托管在这里--这是对E 227的230秒限制的限制。

当使用宿主实例时,超时实际上是230秒,这是Azure WebApp允许的最大超时时间(参见这个职位)。如果您自己在IIS/IIS Express中托管它,则不会有此限制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47480423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档