如何停止 IIS Express 10.0 返回 411 LengthRequired

How to stop IIS Express 10.0 returning 411 LengthRequired

我有一个 .NET 4.6.1 客户端应用程序,它使用 HttpWebRequest 调用 IIS 上托管的 WebAPI。其中一个调用是没有 body 的 POST 请求,它没有设置 ContentLength header(HttpWebRequest.ContentLength 有它的默认值 -1,表示 属性 尚未设置,没有要发送的请求数据)。

最近我用Windows 10 Version 1909重装了我的开发机器,并重新安装了最新的Visual Studio 2017 15.9.22。自从这样做:

我知道我可以(并且最终会)fix this by modifying my client code to set ContentLength = 0

但是客户端代码不在现场,如果可能的话,我想修复这个 server-side,例如通过适当地配置 IIS Express。

在我看来,这像是 IIS 8.5 和 IIS Express 10.0.14358.1000 之间 IIS 行为的重大变化,因为最新的 IIS Express 在拒绝接受 POST 没有 ContentLength header.

有没有办法将 IIS Express 配置为像以前一样运行?或者在不修改客户端代码的情况下通过其他方式解决此问题?

如果您查看请求,您会看到响应不是从 IIS 返回的,而是 http.sys HTTP-API/2.0.

由于没有注册表可以修复此问题,恐怕修复 411 的唯一方法是修改您的客户端代码。否则IIS express连请求都接受不了

https://support.microsoft.com/en-us/help/820129/http-sys-registry-settings-for-windows