C# 使用[FromBody]并能够处理无效输入
在ASP.NET Core(本例中为2.1)中的控制器中使用C# 使用[FromBody]并能够处理无效输入,c#,asp.net-core,asp.net-core-mvc,asp.net-core-2.1,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Core 2.1,在ASP.NET Core(本例中为2.1)中的控制器中使用[FromBody]时,它会处理到指定模型的所有转换,并确保模型有效。这意味着,如果提供的输入格式不正确,控制器方法甚至不会被调用 我如何实现即使在输入无效的情况下也会调用我的控制器方法,这样我就可以自己处理错误情况了 有没有一种方法可以编写自己的中间件,让它以我的系统需要的方式记录无效的输入,或者有没有一种我可以使用的默认方法 在asp.net core 2.1中,ApiController属性被用作选择Web API特定约定和行为的
[FromBody]
时,它会处理到指定模型的所有转换,并确保模型有效。这意味着,如果提供的输入格式不正确,控制器方法甚至不会被调用
在asp.net core 2.1中,
ApiController
属性被用作选择Web API特定约定和行为的方式。在启动中使用CompatibilityVersion.Version_2_1
标志设置兼容性级别
新的行为是验证错误将被忽略。如文档中所述,很容易抑制这种行为:
services.Configure<ApiBehaviorOptions>(options =>
{
options.SuppressModelStateInvalidFilter = true;
});
至于你的第二个问题,这太宽泛了:
。。。要以系统需要的方式记录无效输入
有(如
ExceptionFilterAttribute
)可以使用。也许这就是你想要的?是的,是的。我使用由dotnet cores mvc模板生成的默认控制器模板。有多个独立的dotnet core应用程序正在运行。它们都相互作用。由于我们严重依赖数据,但质量不足,因此我希望能够自己处理无效请求,方法是在将它们转换为有效的ModelState之前尝试修复它们,或者发出有意义的日志消息,这些消息可以由工程师审查,以便稍后修复。因为所有的服务都将执行相同的日志报告,我想可能是一个中间件,它负责为每个人进行自定义验证,因此不是每个控制器功能都需要手动检查。因为第一个是最重要的。如果有一种方法可以自动处理所有这些,我仍然很感兴趣。
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}