用于检查 ModelState.IsValid 的 ActionFilter 永远不会被命中

Hyp*_*ate 1 c# .net-core asp.net-core asp.net-core-webapi

我编写了一个 ActionFilter 来检查我的模型状态是否有效(这样我就可以记录问题):

public class ValidationFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    { ... }
}
Run Code Online (Sandbox Code Playgroud)

我的断点从未被命中,我在 Postman 中得到了输出:

{ "errors": {
"RequiredText": [
"Test - requiredText is required"
]
},
"title": "发生一个或多个验证错误。",
"status": 400,
"traceId": "0HLOBA7E4R7SL:00000002"
}

我假设 .NET Core 预先进行了验证。
有没有办法关闭此功能,以便使用我的属性?

ape*_*als 5

SuppressModelStateInvalidFilter我认为您必须通过将选项设置为 true 来禁用默认行为。您可以在ConfigureServices 方法中将此选项设置为true。喜欢,

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<ApiBehaviorOptions>(options =>
    {
        options.SuppressModelStateInvalidFilter = true;
    });
}
Run Code Online (Sandbox Code Playgroud)