2013-12-24 3 views
2

У меня есть по умолчанию шаблон MVC4 проекта и следующую подписку на UnhandledException события в моей Global.asax:AppDomain.CurrentDomain.UnhandledException не стреляя в MVC

[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)] 
    protected void Application_Start() 
    { 
     AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 
    } 

    void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
    { 
     Debugger.Break(); 
     // Some logging code here 
    } 

В моем действии Индекс HomeController Я просто написать:

throw new Exception("Test exception"): 

Консольное приложение с такой подпиской работает отлично. Но в вызове обработчика проекта MVC никогда не происходит. Что не так с MVC?

+0

возможно дубликат [Обработка ошибок в ASP.NET MVC] (http://stackoverflow.com/questions/812235/error-handling-in-asp- net-mvc) – Levi

+0

Существует хорошее объяснение здесь http://stackoverflow.com/a/16348903/441729 относительно того, почему AppDomain.CurrentDomain.UnhandledException не работает для пула приложений, работающего в IIS. – grahamesd

ответ

0

Обратный вызов UnhandledException не вызывается, потому что когда исключение action exception обрабатывается инфраструктурой MVC, а AppDomain не имеет необработанного исключения, поэтому его не может быть выгружен, и он может обрабатывать следующий запрос.

Самый короткий путь для входа исключение:

protected void Application_Error(object sender, EventArgs args) 
{ 
    Debugger.Break(); 
    Exception error = ((HttpApplication)sender).Context.Server.GetLastError(); 
    // Some logging code here 
} 
Смежные вопросы