Если вы пытаетесь получить доступ к Session
переменным из Global.asax, вам нужно убедиться, что вы используете событие, которое вызывается после инициализации Session
для текущего запроса. Если вы посмотрите документацию на MSDN , вы увидите, что в Global.asax можно подключить несколько событий (см. Список событий в разделе «Запрос обрабатывается HttpApplication pipe ").
Если вы подключите эти события, вы обнаружите, что Session
инициализируется до повышения Application_AcquireRequestState
. Если вы переместите свой код из Application_AuthenticateRequest
в Application_AcquireRequestState
, он должен работать правильно.
Обратите внимание, что я использовал следующий код для проверки, когда Session
будет инициализирован (C #, извините). Я связал каждое событие в порядке, указанном в документации, и Application_AcquireRequestState
был первым событием, когда я увидел, как session == null
оценивается как false
.
void Application_AcquireRequestState(object sender, EventArgs e)
{
var session = HttpContext.Current.Session;
Response.Write("Application_AcquireRequestState: -> session is null: ");
Response.Write(session == null);
Response.Write("<br />");
}