Какие события жизненного цикла ASP.NET срабатывают после HttpApplication.Error? - PullRequest
15 голосов
/ 02 ноября 2010

Я хочу знать, какие части жизненного цикла запроса ASP.NET происходят после обработки ошибки с помощью события HttpApplication.Error.В частности, какие из событий, перечисленных в http://msdn.microsoft.com/en-us/library/bb470252.aspx#Stages, срабатывают после ошибки?Я знаю, что EndRequest по-прежнему срабатывает, и я подозреваю, что PreSendRequestHeaders и PreSendRequestContent также работают, но кроме этого я понятия не имею.

Зависит ли это от того, когда в жизненном цикле возникает ошибка?Зависит ли это от того, вызываю ли я Server.ClearError () в обработчике ошибок?

Я задаю этот вопрос, потому что не знаю, должен ли я вызывать HttpApplication.CompleteRequest () из моего обработчика ошибок.

Ответы [ 5 ]

3 голосов
/ 05 сентября 2012

Лучший способ - перехватить последнюю ошибку сервера и исключения домена приложения.

Все это можно сделать в файле Global.asax.cs.

Проверьте следующие шаги:

1- В Global.asax.cs перехватите последнюю ошибку и зарегистрируйте ее.

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception exception = Server.GetLastError();
        Server.ClearError();
        log.Error("Application Error caught in Global ", exception);
    }

2 - добавить обработчик события UnhandledException в AppDomain, его следует добавить в Application_Start:

    protected void Application_Start(object sender, EventArgs e)
    {
        //....
        AppDomain.CurrentDomain.UnhandledException 
              += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    }       

3 - А вот реализация CurrentDomain_UnhandledException:

    void CurrentDomain_UnhandledException(object sender, 
                                                   UnhandledExceptionEventArgs e)
    {
      if (e != null)
        log.Error("Domain Unhandled Exception: ", e.ExceptionObject as Exception);
    }

Удачного кодирования:)

0 голосов
/ 26 августа 2012
0 голосов
/ 20 марта 2012

Я не проверял, но я думаю, что это зависит.

Ошибка может возникнуть в любом событии страницы (Init / Load / PreRender). После возникновения ошибки, если вы удалите ее, жизненный цикл страницы будет продолжен с того места, где она была.

0 голосов
/ 27 марта 2012

Исключение, которое вызывает событие Error, может быть вызвано вызовом метода GetLastError.Если ваше приложение генерирует пользовательский вывод ошибок, подавьте сообщение об ошибке по умолчанию, сгенерированное ASP.NET, путем вызова метода ClearError.

0 голосов
/ 14 сентября 2011

Событие LogRequest возникает даже при возникновении ошибки.Вы можете предоставить обработчик событий для события LogRequest, чтобы обеспечить настраиваемое ведение журнала для запроса.для получения дополнительной информации о http://msdn.microsoft.com/en-us/library/system.web.httpapplication.logrequest.aspx

Если ваше приложение генерирует пользовательский вывод ошибок, подавьте сообщение об ошибке по умолчанию, сгенерированное ASP.NET при вызове метода ClearError в событии HttpApplication.Error.

...