доступ к SessionState в Global.Application_Error - PullRequest
1 голос
/ 18 ноября 2008

В методе Application_Error в Global.asax я пытаюсь получить значение из состояния сеанса.

Я могу получить доступ к состоянию сеанса, пока я выбрасываю исключение. EG:

thow new Exception("Test exception");

Однако, если это необработанное исключение, я получаю следующую ошибку при попытке доступа к состоянию сеанса: «Состояние сеанса недоступно в этом контексте».

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 ноября 2008

Я ненавижу ASP.NET иногда ...

Итак, выдает ошибку, используя:

Response.Redirect("thispagedoesnotexist.aspx", false); 

Приведенная выше строка будет перенаправлена ​​на Application_Error с недоступным состоянием сеанса

Однако

throw new Exception("test");

Приведенная выше строка будет перенаправлена ​​на Application_Error с состоянием сеанса AVAILABLE

Так что вместо того, чтобы делать все это в Application_Error, в одном месте мне придется использовать try / catches мой код для отлова ошибок. Затем соберите данные из сеанса, войдите в журнал и отправьте информацию об ошибке по электронной почте, а затем, наконец, перенаправьте на дружественную страницу ошибок. Много лишнего кода ..

Вывод: ошибка_приложения бесполезна.

0 голосов
/ 19 ноября 2008

Я думаю, что вы пытаетесь получить доступ к сеансу через HttpContext.Current.Session. Я полагаю, что разница в поведении заключается в том, что в обработчике неуправляемых исключений запрос перешел в режим «отказоустойчивости» и жизненный цикл страницы (включая загрузку и удаление сеанса) завершился.

Проверьте эту страницу на жизненном цикле для получения дополнительной информации

...