2009-11-26 2 views
3

У меня есть приложение ASP.NET MVC, которое должно захватывать все необработанные исключения в обработчике ошибок приложения global.asax.ASP.NET Global.asax Application_Error работает, но не при использовании события Error

Если я определить обработчик следующим образом:

protected void Application_Error(object sender, EventArgs e) 

то он работает отлично. Однако, если в рамках мероприятия Application_Start я стараюсь:

this.Error += new EventHandler(Application_Error); 

Настоящее событие никогда не вызывается.

Кто-нибудь знает, почему и если да, то что я делаю неправильно?

ответ

3

Нельзя явно добавлять событие ошибки; Application_Error должен автоматически вызываться через фреймворк.

+0

Я буду голосовать за первый комментарий, но я не верю, что вторая часть верна. В настоящее время я запускаю свое приложение с элементом CustomErrors в моем webconfig, и он отлично справляется с обработчиком ошибок. – TygerKrash

+0

Спасибо, не знаю, куда я иду. Отредактировал мой ответ. – Paul

0

Событие не вызывается либо из-за того, что Исключения захватываются в другом месте приложения (и, возможно, проглочены), либо потому, что вы регистрируете событие в событии Application_Start (не нужно). Вы хотите сделать что-то подобное в вашем Application_Error:

protected void Application_Error(object sender, EventArgs e) { 
    Exception exception = Server.GetLastError(); 
    // log exception 
    // Email exception 
} 

Я использую этот метод как бревенчатых и электронной почты неперехваченными ошибок для всех моих приложений. Надеюсь это поможет.

Смежные вопросы