在ASP.Net中获取会话ID

30 asp.net

我怎样才能获得所有当前会话的ID?

小智 53

要获取会话ID,请执行以下操作:

// In a user control or page
string sessionId = this.Session.SessionID; 

// In a normal class, running in a asp.net app.
string sessionId = System.Web.HttpContext.Current.Session.SessionID; 
Run Code Online (Sandbox Code Playgroud)

你不应该:

  • 制作任何数据表或循环任何东西
  • 使用SQL Server进行会话状态
  • 处理Session_Start或Session_End

在无cookie的场景中,第一次访问Session对象时会创建会话ID.这应该不重要,因为当您访问SessionID属性时,会访问会话对象.

有关详细信息,请查看以下内容:

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx

注意:msdn示例由猴子编写.


Kon*_*kus 5

您可以使用Global.asax文件并在Session_Start事件中设置Session .见下文

Global.asax文件中你可以做这样的事情:

protected void Session_Start(object sender, EventArgs e)
{
    Session["sid"] = Session.SessionID;
    Session["sid"] = "Test";
} 
Run Code Online (Sandbox Code Playgroud)

然后在您的WebForm中,您可以获得会话ID和值,如下所示

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("Session ID is:" + Session.SessionID.ToString()+ "<br/>");
    Response.Write("Session value is:" + Session["sid"].ToString());
} 
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://www.dotnetcurry.com/ShowArticle.aspx?ID=126


Ken*_*ing 0

答案部分取决于您存储会话状态的位置。Session_Start假设您使用默认值(inproc),那么您可以使用 global.asax 中的和事件来维护当前会话 ID 的列表Session_End