0

跟踪用户信息、会话 ID、cookie 的最佳方式是什么?一次用于用户会话。在 Default.aspx 中:

protected void Page_Load(object sender, EventArgs e)
{
  IF (!isPostPack)
  {
    var sessionValue= System.Web.HttpContext.Current.Request.Cookies["ASP.NET_SessionId"] != null ?                      System.Web.HttpContext.Current.Request.Cookies["ASP.NET_SessionId"].Value : string.Empty;
     cONSOLE.WRITELINE(sessionValue);
    }

}

这不是优化。无论如何,每个用户只能获得一次会话 ID?

4

1 回答 1

0
var sessionValue = System.Web.HttpContext.Current.Request.Cookies["ASP.NET_SessionId"] 
!= null ? 
System.Web.HttpContext.Current.Request.Cookies["ASP.NET_SessionId"].Value : string.Empty;

所提供的只是 ASP.Net 用来跟踪会话的标识符。这很少需要您在代码中直接访问。

但假设这你想要的,它会非常快。为了使其更清洁,您可以:

  • 直接访问Request(不需要HttpContextinside a Page
  • 将值存储在将在页面生命周期中存在的类级变量中。
private string _sessionId;

protected void Page_Load(object sender, EventArgs e)
{
    _sessionId = Request.Cookies["ASP.NET_SessionId"] != null 
        Request.Cookies["ASP.NET_SessionId"].Value : string.Empty;
}

如果您只想在每个会话中执行此操作(根据评论):

protected void Session_Start( object sender, EventArgs e )
{
    using( var writer = File.CreateText( @"c:\temp\session-id.txt" ) )
    {
        writer.WriteLine( Session.SessionID );
    }
}
于 2013-09-18T19:24:08.783 回答