使用[FromBody]并能够处理无效的输入

时间:2018-09-15 09:10:05

标签: c# asp.net-core asp.net-core-mvc asp.net-core-2.1

在ASP.NET Core(在本例中为2.1)的控制器中使用[FromBody]时,它将处理对指定模型的所有转换并确保该模型有效。这意味着,如果提供的输入格式错误,则甚至不会调用controller方法。

  1. 如何实现即使输入无效也可以调用我的控制器方法,以便我自己处理错误情况?
  2. 有没有一种方法可以编写自己的中间件,以便按照系统需要的方式记录无效输入,或者甚至可以使用默认的中间件?

1 个答案:

答案 0 :(得分:3)

在asp.net核心2.1中,library(sqldf) sqldf("select avg(Variable) from df where ID IN (select ID from df where variable=30 AND week=1) AND Week=2") 属性已成为introduced,作为选择加入特定于Web API的约定和行为的方式。在启动时使用 avg(Variable) 1 37.5 标志来设置compatibility的级别。

新的行为是验证错误将automatically trigger an HTTP 400 response。如文档中所述,抑制这种行为非常容易:

ApiController

在这种情况下,您可以照常验证模型:

CompatibilityVersion.Version_2_1

关于第二个问题,这个范围太广了:

  

...以我的系统需要的方式记录无效输入...

您可以使用filters(如services.Configure<ApiBehaviorOptions>(options => { options.SuppressModelStateInvalidFilter = true; }); )。也许这就是您想要的?