Powershell,使用 Invoke-RestMethod 调用 API 导致双重执行

Powershell, calling API with Invoke-RestMethod results in double execution

我有一个 API,我在 Powershell 中使用 Invoke-Restmethod 像这样调用它

Invoke-RestMethod -Method GET -Uri http://localhost:3030/api/startSync -TimeoutSec 2147483647

这导致 API 方法被调用两次。一次是立即,另一次是在第一次呼叫后恰好 120 秒。如果我使用另一个客户端调用 API 方法,它只会被调用一次(因此它似乎不是 API 方法本身的问题,而是 Invoke-RestMethod 调用中的问题)。我找不到任何关于此的文档。这是什么原因,我该如何预防?

显然在使用 PowerShell 命令 Invoke-RestmethodInvoke-WebRequest 时存在一些未记录的行为:当使用 TimeoutSec 选项时,该命令在第一次调用后 120 秒重复,如果在那之前没有回应。如果未使用 TimeoutSec 选项,则不会发生这种情况(但在大约 115 秒后会出现错误消息)。

使用 PowerShell 5 测试。

解决方法:运行不带TimeoutSec的命令或修改API调用,使结果在120​​秒前返回,即使虽然作业在后台继续 运行ning。