В 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
), который вы можете использовать.Возможно, это то, что вы ищете?