0

我正在记录从人们登录到我的 .NET 2.0 Web 应用程序开始的会话开始时间,但我还想记录会话 ID。有人可以给我一些关于如何完成此操作的示例代码(如何从 Global.ASAX 中访问会话 ID)。

如果您需要任何其他信息,请告诉我。

4

3 回答 3

4

HttpContext.Current.Session.SessionID

编辑以显示空测试:

if ((HttpContext.Current != null) && (HttpContext.Current.Session != null) {
  id = HttpContext.Current.Session.SessionID
}
于 2010-02-05T19:48:04.647 回答
1

HttpContext.Current.Session.SessionId正如您可能已经知道的那样,您可以非常简单地了解它。您需要在Application_AcquireRequestState加载会话状态之前处于 on 或之后,并且会话状态也仅在请求的资源实现时加载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

于 2010-02-05T19:55:05.640 回答
0

在 ASP.NET 识别用户会话之后的第一个请求时,将 datetime 和 sessionid 写入会话。

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;
        }
    }
}
于 2010-02-05T20:21:03.380 回答