处理.NET Core 2.1 Web API中的无效请求错误

时间:2018-07-14 14:25:04

标签: .net-core asp.net-core-webapi

我所拥有的:

  • 一个简单的Web API-POST api /示例
  • 邮递员发送请求。

当我将内容类型设置为application / json时,一切正常。但是当我更改为其他任何内容时,都会收到以下响应:

reduce

从红est日志中,我得到:

  

应用程序未读取整个请求主体就完成了。

这是Web API处理无效请求的方式。我想发现的是如何捕获和处理这种异常并更改默认消息。

我确实有一个错误处理中间件,但是在这种情况下,该请求无效,因此它从未被调用。

如何更改此默认行为?

1 个答案:

答案 0 :(得分:0)

好一会儿,我不得不回到这个问题上。

我发现此验证与ASP.NET Core Framework的自动模型状态验证有关。因此,每次将无效值传递给Web API控制器时,都会在执行过滤器ModelStateInvalidFilter之前,最终触发400错误请求:“输入无效。”

尽管有一些方法可以覆盖此行为,但就我而言,我发现最好将其禁用。为此,只需在 ConfigureServices 方法中将以下行添加到您的 Startup.cs 中:

services.Configure<ApiBehaviorOptions>(options =>
{
    options.SuppressModelStateInvalidFilter = true;
});

有关此内容以及如何覆盖它的更多详细信息,您可以在此处查看:

http://www.talkingdotnet.com/disable-automatic-model-state-validation-in-asp-net-core-2-1/

在这里:

Correct way to disable model validation in ASP.Net Core 2 MVC