我所拥有的:
当我将内容类型设置为application / json时,一切正常。但是当我更改为其他任何内容时,都会收到以下响应:
reduce
从红est日志中,我得到:
应用程序未读取整个请求主体就完成了。
这是Web API处理无效请求的方式。我想发现的是如何捕获和处理这种异常并更改默认消息。
我确实有一个错误处理中间件,但是在这种情况下,该请求无效,因此它从未被调用。
如何更改此默认行为?
答案 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