2013-09-21 3 views
0

У меня есть приложение ASP.NET MVC 4. Я хочу использовать собственный атрибут ошибки дескриптора. Therefor Я написал этот класс: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"); никогда не работает. Что я делаю не так?

ответ

1

OnException method is virtual, но поскольку у вас нет модификатора override, вы скрываете и не переопределяете этот метод. Таким образом, ваш собственный метод не будет вызван инфраструктурой MVC.

Чтобы исправить это вам просто нужно override метод:

public class MyHandleErrorAttribute : HandleErrorAttribute 
{ 
    public override void OnException(ExceptionContext filterContext) 
    { 
     base.OnException(filterContext); 
     Debug.WriteLine("Error Occured"); 
    } 
} 
Смежные вопросы