我设置了一些自定义中间件来处理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并在发生错误时引发异常,以便我的错误中间件能够获取它?