ASP.NET 核心 6 异常中间件和验证

ASP.NET Core 6 ExceptionMiddleware and Validations

在 ASP.NET Core 6 中,我有一个自定义中间件来处理返回特定结构的异常:

 services.AddControllers(options => options.Filters.Add(typeof(CustomHttpResponseExceptionFilter)));

效果很好。但是,当参数验证失败时,例如:

GetSomethingAsync([Required][MinLength(2)]string orderNumber) 

未调用 CustomHttpResponseExceptionFilter

我在哪里可以拦截失败,例如数据标注 [Required]?

您好,您需要自定义 ModelStateInvalidFilter 的行为。

为此,您可以在 Program.cs

中执行以下操作
builder.Services.AddControllers().ConfigureApiBehaviorOptions(options =>
{
    options.InvalidModelStateResponseFactory = context =>
    {
        // Expects an instance of IActionResult.
    };
});

您可以在 Microsoft's documentation 找到更多信息。