加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何在会话状态中查看所有活动会话的所有内容?

发布时间:2020-12-16 09:56:31 所属栏目:asp.Net 来源:网络整理
导读:我想创建一个管理页面来表明我们对会话状态的使用并没有失控. 是否可以检索所有活动会话的列表,如果是,我如何访问每个会话中的所有会话数据? 解决方法 免责声明:我刚刚提出这个实现,因为我认为这是一个有趣的 – 可解决的 – 问题.因此,我可能会忽略一些问
我想创建一个管理页面来表明我们对会话状态的使用并没有失控.

是否可以检索所有活动会话的列表,如果是,我如何访问每个会话中的所有会话数据?

解决方法

免责声明:我刚刚提出这个实现,因为我认为这是一个有趣的 – 可解决的 – 问题.因此,我可能会忽略一些问题或细节.不过,如果您使用InProc会话状态,这是一个解决方案.

简介:创建在Application_Start事件期间创建的Application状态中存储的应用程序级对象(例如List),并在每个Session_Start事件上,将对会话的引用添加到列表中.在Session_End上,删除它.要检索所有活动会话和值,请遍历会话列表,然后遍历每个会话和会话密钥.

Global.asax中

void Application_Start(object sender,EventArgs e) 
{
    Application["activeSessions"] = new System.Collections.Generic.List<HttpSessionState>();
}

void Session_Start(object sender,EventArgs e) 
{
    var activeSessions = (System.Collections.Generic.List<HttpSessionState>)Application["activeSessions"];
    activeSessions.Add(this.Session);
}

void Session_End(object sender,EventArgs e) 
{
    var activeSessions = (System.Collections.Generic.List<HttpSessionState>)Application["activeSessions"];
    activeSessions.Remove(this.Session);
}

SomePage.aspx页面

//add something to session for test
    this.Session["someStr"] = DateTime.Now.ToString();

    //get sessions
    var activeSessions = (List<HttpSessionState>)Application["activeSessions"];
    foreach (var session in activeSessions)
    {
        Response.Write("Session " + session.SessionID + "<br/>");
        foreach (string key in session.Keys)
        {
            Response.Write(key + " : " + session[key] + "<br/>");
        }
        Response.Write("<hr/>");
    }

输出:(加载第二个浏览器后点击页面)

06002

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读