我使用了System.Net.HttpWebRequest和Invoke-WebRequest (我知道它下面是相同的代码),并且在以下场景中都给出了500的状态:
$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分钟)。没人知道该怎么做?
我已经设置了这个场景,因为我有一个网站,我需要测试,有一个很长的响应时间。
发布于 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 (即根本不指定超时)也会产生相同的结果:
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中托管它,则不会有此限制。
https://stackoverflow.com/questions/47480423
复制相似问题