如何停止 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,表示 属性 尚未设置,没有要发送的请求数据)。
- 当我将此请求发送到 IIS 8.5 上托管的 WebAPI 应用程序时,POST 请求正常工作。
- 直到最近,我还能够在 Visual Studio 2017 调试器下将请求发送到 IIS Express 上的 WebAPI 运行,并且再次正常工作。不幸的是,我不再确切知道正在使用哪个版本的 IIS Express。
最近我用Windows 10 Version 1909重装了我的开发机器,并重新安装了最新的Visual Studio 2017 15.9.22。自从这样做:
- 从开发机器发送到 IIS 8.5 上远程托管的 WebAPI 的请求继续正常工作。
- 在 Visual Studio 2017 调试器下在 IIS Express 10.0.14358.1000 上本地发送到 WebAPI 运行 的请求被拒绝,并返回 411 LengthRequired。
我知道我可以(并且最终会)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
我有一个 .NET 4.6.1 客户端应用程序,它使用 HttpWebRequest
调用 IIS 上托管的 WebAPI。其中一个调用是没有 body 的 POST 请求,它没有设置 ContentLength header(HttpWebRequest.ContentLength
有它的默认值 -1,表示 属性 尚未设置,没有要发送的请求数据)。
- 当我将此请求发送到 IIS 8.5 上托管的 WebAPI 应用程序时,POST 请求正常工作。
- 直到最近,我还能够在 Visual Studio 2017 调试器下将请求发送到 IIS Express 上的 WebAPI 运行,并且再次正常工作。不幸的是,我不再确切知道正在使用哪个版本的 IIS Express。
最近我用Windows 10 Version 1909重装了我的开发机器,并重新安装了最新的Visual Studio 2017 15.9.22。自从这样做:
- 从开发机器发送到 IIS 8.5 上远程托管的 WebAPI 的请求继续正常工作。
- 在 Visual Studio 2017 调试器下在 IIS Express 10.0.14358.1000 上本地发送到 WebAPI 运行 的请求被拒绝,并返回 411 LengthRequired。
我知道我可以(并且最终会)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