Nullref для Session.Current в файле App_Code

У меня есть класс Session.cs в каталоге App_Code, которому нужно извлечь некоторые значения из сеанса. Я определяю сеанс следующим образом:

Сеанс System.Web.SessionState.HttpSessionState = HttpContext.Current.Session;

но когда я запускаю страницу, я получаю исключение Null Reference Exception в сеансе.

Класс (Session.cs) вызывается из другого класса .cs. Это, в свою очередь, вызывается страницей aspx.

Может ли быть так, что сеанс не существует в текущей части страничного цикла? Вызывающий класс вызывается из page_load, поэтому он должен существовать.

Как убедиться, что я правильно ссылаюсь на текущий сеанс? Спасибо за чтение.


person Phil    schedule 03.09.2010    source источник
comment
Рассматриваемый класс вызывается со страницы или это IHttpHandler? Причина в том, что если вы находитесь в IHttpHandler, вам также необходимо реализовать пустой интерфейс IRequiresSessionState или IReadOnlySessionState.   -  person Brad Nabholz    schedule 03.09.2010
comment
Как узнать, является ли это IHttpHandler? Он вызывается со страницы, но не напрямую, если это имеет значение? Класс, который его вызывает, вызывается со страницы... Я попытался реализовать оба предложенных вами интерфейса, но все равно получаю ту же ошибку.   -  person Phil    schedule 03.09.2010


Ответы (1)


Я «решил» это, не используя HttpContext, а вместо этого настроив класс FakeSession, который я передал бы всем классам, которым нужно было бы знать идентификатор сеанса и значения из сеанса. Я сохранил значения, которые, как я думал, мне понадобятся в качестве свойств в классе... ничего особенного.

person Phil    schedule 04.09.2010