Когда применяется атрибут [ApiController]
, ASP. NET Ядро автоматически обрабатывает ошибки проверки модели, возвращая неверный запрос 400 с ModelState в качестве тела ответа:
Automati c HTTP 400 ответов
Чтобы отключить автоматическое поведение c 400, установите для свойства SuppressModelStateInvalidFilter
значение true:
services.AddControllers()
.ConfigureApiBehaviorOptions(options =>
{
options.SuppressModelStateInvalidFilter = true;
});
Затем вы можете создать глобальный фильтр действий для проверки ModelState.IsValid
и добавьте свою пользовательскую проверку модели, что-то вроде:
public class CustomModelValidate : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext context) {
if (!context.ModelState.IsValid) {
context.Result = new BadRequestObjectResult(context.ModelState);
}
}
}
И зарегистрируйте ее глобально, чтобы применить фильтр к каждому запросу.