Необходимо отклонить запросы, которые имеют ЛЮБОЕ содержимое тела (это означает, что body
размер> 0).Я попытался использовать атрибут RequestSizeLimit
, но он не работает должным образом.
Код:
[HttpPost]
[RequestSizeLimit(0)]
public IActionResult Test()
{
return Ok();
}
Я использую Postman
для тестов.Укажите "qwerty" в качестве значения для тела запроса POST
.Вот как выглядит Kestrel
журнал:
info: Microsoft.AspNetCore.Server.Kestrel [17] Идентификатор соединения "0HLN06I1687S4" неверные данные запроса: "Тело запроса слишком большое." Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Слишком большое тело запроса.Kestrel.Core.Internal.Http.MessageBody.TryStart () в Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.ConsumeAsync () в Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http.ProcessRequests [TContext] (приложение IHttpApplication 1) в Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync [TContext] (приложение IHttpApplication 1)
Несмотря на это, я все еще вижуответ 200 (ОК).Я могу отладить метод без проблем.Кажется, что фильтр работает нормально, но по какой-то причине он не вызывает исключений.Ожидаемое поведение - это состояние «слишком большая полезная нагрузка» (413), возвращаемое для запроса, и выполнение кода в методе не инициируется.
Есть идеи или объяснения - почему я вижу такое поведение?