.net core 处理.net core 2.1 web api中的无效请求错误

.net core 处理.net core 2.1 web api中的无效请求错误,.net-core,asp.net-core-webapi,.net Core,Asp.net Core Webapi,我所拥有的: 一个简单的Web API-POST API/示例 邮递员发送请求 当我使用设置为application/json的内容类型发出请求时,一切正常。但当我换成其他任何东西时,我会得到以下回应: { "": [ "The input was not valid." ] } 从红隼日志中我得到: 应用程序在未读取整个请求正文的情况下完成 这就是web api处理无效请求的方式。我想了解的是如何捕获和处理此类异常并更改默认消息 我确实有一个错误处理中间件

我所拥有的:

  • 一个简单的Web API-POST API/示例
  • 邮递员发送请求
当我使用设置为application/json的内容类型发出请求时,一切正常。但当我换成其他任何东西时,我会得到以下回应:

{
    "": [
        "The input was not valid."
    ]
}
从红隼日志中我得到:

应用程序在未读取整个请求正文的情况下完成

这就是web api处理无效请求的方式。我想了解的是如何捕获和处理此类异常并更改默认消息

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


如何更改此默认行为?

好吧,过了一段时间,我不得不回到这个问题上来

我发现这个验证与ASP.NET核心框架的自动模型状态验证有关。因此,每次向web API控制器传递一个无效值时,都会先执行一个过滤器ModelStateInvalidFilter,最后触发400个错误请求:“输入无效。”

虽然有一些方法可以覆盖此行为,但对于我的情况,我发现最好是禁用它。为此,只需将以下行添加到ConfigureServices方法中的Startup.cs

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

在这里: