网络核心中的自定义错误中间件无法捕获模型状态错误

时间:2019-06-20 08:25:26

标签: asp.net-core

我设置了一些自定义中间件来处理api应用程序中的错误。

startup.cs中,我得到的代码如下

app.UseErrorHandlingMiddleware(); //this is custom extension method that just does builder.UseMiddleware<ErrorHandlingMiddleware>();
app.UseAuthentication;
app.UseMvc();

应用程序中引发的任何错误都被中间件捕获,但是如果我将无效模型发送给控制器操作,则中间件不会捕获模型状态验证错误。我收到标准的400错误请求响应,例如:

{“错误”:{“用户名”:[“必须输入用户名字段。”]},“标题”:“发生一个或多个验证错误。”,“状态”:400,“ traceId”:“ 0HLNLAV1FS4IJ:00000002“}

我是否需要做一些事情才能使中间件收到这些错误?

中间件调用方法如下:

 public async Task Invoke(HttpContext context /* other dependencies */)
    {
        try
        {
            await next(context);
        }
        catch (Exception ex)
        {
            await HandleExceptionAsync(context, ex);
        }
    }

我是否需要使用ActionFilter来检查modelstate并在发生错误时引发异常,以便我的错误中间件能够获取它?

0 个答案:

没有答案