Использование [FromBody] и возможность обрабатывать неверный ввод - PullRequest
0 голосов
/ 15 сентября 2018

При использовании [FromBody] в контроллере в ASP.NET Core (в данном случае - 2.1) он обрабатывает все преобразования в указанную модель и проверяет, что модель действительна. Это означает, что метод контроллера даже не будет вызван, если предоставленный вход поврежден.

  1. Как я могу добиться, чтобы мой метод контроллера вызывался даже с неверным вводом, чтобы я мог самостоятельно обрабатывать ошибки?
  2. Есть ли способ написать свое собственное промежуточное программное обеспечение для регистрации недопустимых входных данных так, как это нужно моей системе, или есть даже стандартное, которое я мог бы использовать?

1 Ответ

0 голосов
/ 15 сентября 2018

В asp.net core 2.1 атрибут ApiController был введен в качестве способа выбора соглашений и поведения, специфичных для Web API.Используйте флаг CompatibilityVersion.Version_2_1 при запуске, чтобы установить уровень совместимости .

. Новое поведение состоит в том, что ошибки проверки автоматически инициируют ответ HTTP 400 .Как описано в документации, довольно просто подавить это поведение:

services.Configure<ApiBehaviorOptions>(options =>
{
    options.SuppressModelStateInvalidFilter = true;
});

В этом случае вы можете проверить модели как обычно:

if (!ModelState.IsValid)
{
    return BadRequest(ModelState);
}

Что касается вашего второго вопроса,это слишком широко:

... для записи неверных входных данных так, как это требуется моей системе ...

Есть фильтры (как ExceptionFilterAttribute), который вы можете использовать.Возможно, это то, что вы ищете?

...