Application_Error не срабатывает? - PullRequest
6 голосов
/ 09 апреля 2011

В Webform1.aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
    throw new Exception("test exception");
}

В Global.asax.cs:

protected void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    if (Server.GetLastError() is HttpUnhandledException)
        Server.Transfer("ErrUnknown.aspx");
}

Но обработчик события Application_Error никогда не вызывается. Вместо этого я получаю страницу с ошибкой во время выполнения.

Что мне нужно сделать, чтобы Application_Error вызывался после возникновения исключения?

Ответы [ 2 ]

5 голосов
/ 09 апреля 2011

Выглядит нормально, и ошибка Application_Error должна быть вызвана.

Вы проверяли Debugging ваше заявление?

На самом деле вы пропускаете Server.ClearError(), поэтому исключение передается на asp.net, но вы должны подавить его здесь, потому что вы обрабатываете его самостоятельно.

protected void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    if (Server.GetLastError() is HttpUnhandledException)
    {
        // suppressing the error so it should not pass to asp.net
        Server.ClearError();
        Server.Transfer("ErrUnknown.aspx");
    }
}
1 голос
/ 09 апреля 2011

Я нашел проблему.

Server.Transfer("ErrUnknown.aspx")

была причиной.

При попытке просмотреть «ErrUnknown.aspx» непосредственно в браузере, я понял, что на этой странице произошла ошибка.После исправления Server.Transfer работает

Был ли вводит в заблуждение тот факт, что событие не запускается при отладке приложения?

В любом случае.

...