2013-09-21 105 views
0

我有一個ASP.NET MVC 4應用程序。我想使用我的自定義句柄錯誤屬性。爲此我寫了這個類: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 
    {....} 

當錯誤控制器occures,它不能被處理。如果在錯誤之後在調試器中按F5,則顯示ErrorView。但是Debug.WriteLine("Error Occured");行從來沒有工作。我究竟做錯了什麼?

回答

1

OnException methodvirtual但由於您沒有override修飾符,因此您隱藏並且不覆蓋此方法。所以你的自定義方法不會被MVC框架調用。

要糾正這一點,你只需要override方法:

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