ASP.NET - получить SessionID в то время как в Global.ASAX - PullRequest
0 голосов
/ 05 февраля 2010

Я записываю время начала сеанса, когда люди входят в мое веб-приложение .NET 2.0, но я также хотел бы записать идентификатор сеанса. Может кто-нибудь дать мне пример кода о том, как этого добиться (как получить доступ к идентификатору сеанса из Global.ASAX).

Если вам нужна дополнительная информация, просто дайте мне знать.

Ответы [ 3 ]

4 голосов
/ 05 февраля 2010

HttpContext.Current.Session.SessionID

Изменить, чтобы показать нулевой тест:

if ((HttpContext.Current != null) && (HttpContext.Current.Session != null) {
  id = HttpContext.Current.Session.SessionID
}
1 голос
/ 05 февраля 2010

Вы можете сделать это довольно просто с помощью HttpContext.Current.Session.SessionId, как вы, вероятно, уже знаете. Необходимо быть включенным или после Application_AcquireRequestState до того, как будет загружено состояние сеанса, а состояние сеанса также загружается, только когда запрошенный ресурс реализует IRequiresSessionState. Вы можете увидеть список всех событий в global.asax здесь: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5771721.html и узнать больше о IRequiresSessionState здесь: http://msdn.microsoft.com/en-us/library/system.web.sessionstate.irequiressessionstate.aspx

0 голосов
/ 05 февраля 2010

Запишите сеансу дату и время сеанса в момент первого запроса после ASP.NET, идентифицирующего сеанс пользователя.

protected void Application_PreRequestHandlerExecute(object sender, EventArgs eventArgs) {
    var session = HttpContext.Current.Session;
    if (session != null) {
        if (session["foo"] == null) {
            session["foo"] = DateTime.Now.Ticks + "|" + session.SessionID;
        }
    }
}
...