Fixed issue "(EmptyBodyBehavior = EmptyBodyBehavior.Allow)" not being honored #1885
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #, if available:
#1854
Description of changes:
ASP.NET Core controllers that were configured with
(EmptyBodyBehavior = EmptyBodyBehavior.Allow)
should allow requests for PUT and POST to have no body. The controller parameter would be null in this case. This is controlled by our underlying implementation of ASP.NET Core'sIHttpRequestBodyDetectionFeature
interface. Our implementation check to see if the Body property was null or not. This didn't really do anything because we initialize the Body to an empty MemoryStream.When looking at the docs for IHttpRequestBodyDetectionFeature.CanHaveBody it says it should return true for HTTP 1.1 if the request body length is greater then 0. The use case of running ASP.NET Core through Lambda only supports HTTP 1.1. So the fix for the issue is instead of just checking null for the body also check if the length is greater then 0.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.