2016-02-16 2 views
2

Я получаю сообщение об ошибке и, когда я пытаюсь получить значение Session в Global.aspx:состояние сеанса не доступна в данном контексте в Global.asax

enter image description here

Я попробовал другой метод получить значение Session и результат такой же, но сообщение отличается:

enter image description here

Эта ошибка происходит в методе Application_Error и сессии не равно нулю, но это показывает, что она равна нулю. Я поставил этот код сеанса в (HttpContext.Current.Session! = Null), чтобы он работал нормально, но мне нужно значение сеанса, которое не получается с этим методом.

enter image description here

Пожалуйста, помогите мне. Thanks

ответ

1

Приложение_error захватывает ВСЕ исключение в приложении. Ваша ошибка может возникнуть из точки, где нет сеанса.

(быстрый пример: из операции async или созданный пользователем поток) Лучший тест: тест для HttpContext.current! = Null и HttpContext.current.session! = Null перед попыткой чего-либо с сеансом.

А с помощью сеанса плохо в любом случае 

Oh для вас последним пункта: Если поставить точку на разрыв в любом случае еще не «поймать» в ошибке приложения, ваш неисправный thred/асинхронный могут завершить операцию до визуальной остановки студии процесс. Таким образом, в этом случае у вас может быть сеанс, в то время как при обычном прогоне (без точки останова) вы получите исключение

3

Файл Global.asax обычно используется для отслеживания событий на уровне приложений, а также для обмена данными между различными входами в систему так что может оказаться невозможным получить значение сеанса в событиях global.asax.

Для регистрации ошибок можно использовать HttpModule

Ниже ссылка для регистрации ошибок с помощью HttpModule

http://www.codeproject.com/Articles/16171/An-HTTP-Module-for-ASP-NET-Error-Handling

Ниже ссылка для получения значений сеанса в HttpModule

Can I access session state from an HTTPModule?

0

Попробуйте этот ...

string value = HttpContext.Current.Session["user"] as string; 

if (String.IsNullOrEmpty(value)) 
{ 
    //your Code here 
} 
Смежные вопросы