ASP.NET MVC 4 自定义句柄错误

本文关键字:句柄 错误 自定义 NET MVC ASP | 更新日期: 2023-09-27 18:32:25

我有一个 ASP.NET 的MVC 4应用程序。我想使用我的自定义句柄错误属性。因此,我写了这门课:

public class MyHandleErrorAttribute : HandleErrorAttribute
    {
        public void OnException(ExceptionContext filterContext)
        {
            Debug.WriteLine("Error Occured");
        }
    }

我在控制器级别添加了属性:

[MyHandleError(ExceptionType = typeof(Exception),View="ErroView")]
    public class MeetingController : Controller
    {....}

当控制器中发生错误时,无法处理。如果我在错误后在调试器中按 F5,则会显示错误视图。但Debug.WriteLine("Error Occured");这条线永远行不通。我做错了什么?

ASP.NET MVC 4 自定义句柄错误

OnException 方法是virtual,但由于您没有 override 修饰符,因此您隐藏并且不会覆盖此方法。因此,MVC 框架不会调用您的自定义方法。

要更正此问题,您只需override该方法:

public class MyHandleErrorAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        base.OnException(filterContext);
        Debug.WriteLine("Error Occured");
    }
}