首页 > 解决方案 > 发生模型绑定错误时,ASP.NET WebAPI 全局错误处理过滤器不起作用

问题描述

我在 .NET Framework 中编写了 Web API。我做了一个全局错误过滤器。

 public class UnhandledExceptionFilter : ExceptionFilterAttribute
 {
    public override void OnException(HttpActionExecutedContext context)
    {
       //log somewhere 
       //Make user friendly error message
    }
 }

我将它添加到全局过滤器中

config.Filters.Add(new UnhandledExceptionFilter());

当控制器中发生错误时,这可以正常工作。但是当默认模型绑定发生错误时它不起作用。假设我有一个动作,它得到一个DateTime参数。

 public class MyController: ApiController
 {
    public override void CheckBirthdate(DateTime birthdate)
    {
       throw new Exception("Test");
    }
 }

如果我这样称呼MyController/CheckBirthdate?birthdate=03/05/2021我的全局错误处理工作。但是我这样称呼MyController/CheckBirthdate?birthdate=test我的全局错误处理不起作用。我得到这样的错误

无法将字符串转换为日期时间:测试。路径“生日”

为什么全局错误处理过滤器无法捕获它?我该如何解决?

标签: c#asp.netasp.net-web-apierror-handlingmodel-binding

解决方案


推荐阅读