Asp.net Core RequestSizeLimit все еще выполняет действие - PullRequest
0 голосов
/ 21 декабря 2018

Я использую ASP.net Core 2.0 с MVC.У меня есть действие контроллера, которое я хочу ограничить размер запроса до 1 МБ.Я добавил атрибут RequestSizeLimit следующим образом:

[HttpPost]
[Authorize]
[RequestSizeLimit(1_000_000)]
public async Task<List<ResourceUploadResult>> Upload([FromBody]List<Resource> updatedList){
    //....
}

Когда загрузка <1 МБ, она работает, как и ожидалось.Когда он составляет> 1 МБ, я ожидал, что сервер вернет статус 413, но вместо этого параметр updatedList имеет значение NULL, и действие выполняется нормально, когда *

* пытается повторить список.1008 * Есть ли способ сказать Кестрелу вернуть 413, когда достигнут предел размера?

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

Вы можете ограничить размер глобально

.UseKestrel(kestrolOptions =>
{
    kestrolOptions.Limits.MaxRequestBodySize = 1_000_000;
..
0 голосов
/ 22 декабря 2018

Проблема ушла, когда я обновился до 2.1.Не могу с уверенностью сказать, что в 2.0 есть ошибка, но после обновления всех пакетов NuGet до 2.1 она вела себя так, как ожидалось.

К сожалению, у меня нет больше информации о причине, поскольку другие, ищущие решение этой проблемы, могут не иметь возможности просто обновить свою версию, как я.

0 голосов
/ 21 декабря 2018

Вероятно, не самый лучший, но он будет работать в то же время.

if(updatedList == null)
      return StatusCode(413, "Payload to big") ;
...