在ASP.NET Core中的控制器中使用[FromBody]
时(在本例中为2.1),它会处理指定模型的所有转换并确保模型有效。这意味着如果提供的输入格式错误,甚至不会调用控制器方法。
在asp.net核心2.1中,ApiController
属性已被introduced作为选择Web API特定约定和行为的方式。在启动时使用CompatibilityVersion.Version_2_1
标志来设置compatibility的级别。
新的行为是验证错误将automatically trigger an HTTP 400 response。如文档中所述,很容易抑制此行为:
services.Configure<ApiBehaviorOptions>(options =>
{
options.SuppressModelStateInvalidFilter = true;
});
在这种情况下,您可以照常验证模型:
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
至于你的第二个问题,这太宽泛了:
...以我的系统需要的方式记录无效输入...
你可以使用filters(如ExceptionFilterAttribute
)。也许这就是你要找的东西?