0

我有一个 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,则会显示 ErrorView。但Debug.WriteLine("Error Occured");线路永远不会起作用。我究竟做错了什么?

4

1 回答 1

1

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

要更正此问题,您只需要使用override以下方法:

public class MyHandleErrorAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        base.OnException(filterContext);
        Debug.WriteLine("Error Occured");
    }
}
于 2013-09-21T13:17:59.560 回答