Состояние сеанса в этом контексте недоступно
Я хочу прочитать идентификатор сеанса в событии ошибки приложения, но всегда получаю ошибку "Состояние сеанса недоступно в этом контексте". Зачем? Странно то, что у меня такой же код в другом приложении asp.net, и все работает нормально.
void Application_Error(object sender, EventArgs e)
{
var sessionId = Session.SessionID;
//skipped code
}
Ответы
Ответ 1
Объект сеанса может быть недоступен, это зависит от того, когда произошла ошибка.
Например, если в Begin_Request произошла ошибка, сеанс не будет доступен, поскольку он еще не создан.
Таким образом, иногда это иногда срабатывает, в зависимости от того, когда произошла ошибка.
Лучше всего проверить состояние объекта сеанса перед доступом к идентификатору сеанса, например.
HttpContext context = HttpContext.Current;
if (context != null && context.Session != null) ...
Ответ 2
проверьте, не произошло ли какое-либо событие в С#, которое отображается на элемент управления или проблема в конструктивной части
Ответ 3
Application_error может срабатывать в ситуациях, когда сеанс отсутствует, например, когда сборщик мусора очищается. Источником ошибки может быть не пользовательский поток.
Просто проверьте, является ли первый сеанс первым.
Саймон