I have a .NET 4.6.1 client application that uses HttpWebRequest
to call a WebAPI hosted on IIS. One of the calls is a POST request without a body that does not set the ContentLength header (HttpWebRequest.ContentLength
has its default value -1, which indicates the property has not been set and that there is no request data to send).
Recently I repaved my development machine with Windows 10 Version 1909 and reinstalled the latest Visual Studio 2017 15.9.22. Since doing this:
I know that I can (and will eventually) fix this by modifying my client code to set ContentLength = 0.
But the client code is out in the field, and I'd like to fix this server-side if possible, e.g. by configuring IIS Express appropriately.
This looks to me like a breaking change in IIS behavior between IIS 8.5 and IIS Express 10.0.14358.1000, in that the latest IIS Express appears to be more restrictive in refusing to accept a POST without ContentLength header.
Is there a way of configuring IIS Express to behave as it used to? Or some other way of fixing this without modifying client code?
If you review the request, you will see that the response is not returned from IIS but http.sys HTTP-API/2.0.
Since there is no registry can fix this, I'm afraid the only way to fix 411 is modify you client code. Otherwise, IIS express can't even accept the request.
https://support.microsoft.com/en-us/help/820129/http-sys-registry-settings-for-windows