如何在ASP.NET中获取会话状态对象的集合?

时间:2009-11-30 14:47:56

标签: c# asp.net asp.net-mvc session

如何获取ASP.NET中所有Session对象的集合? (请注意,我不是要查找存储在Session对象中的对象集合,而是查找所有会话对象本身。)

这是针对将列出所有活动会话的管理页面,如果用户已登录,还会列出用户名等。

语言:C# 框架:ASP.NET MVC 1.0(3.5 SP1)

编辑:到目前为止,有一些很好的答案,我想到的解决方案,但在我原来的问题中没有提到,即在session_onStart和session_onEnd中添加和删除会话对象。我之前没有这样做的原因是我发现很难相信会话对象的集合不会暴露给我们。我猜测ASP.NET将这个Session异常集合存储在某种类型的集合中,所以我试图找出如何获取该集合。我很乐意编写额外的代码来自己管理它,但是如果这个功能已经存在,我不会创建额外的开销和代码来维护。

2 个答案:

答案 0 :(得分:3)

您可以使用全局asax和以下方法。

sub session_onStart() 

    application.lock() 
    // your logic
    application.unlock() 

end sub 

sub session_onEnd() 

    application.lock() 
// your logic
    application.unlock() 

end sub 

答案 1 :(得分:2)

您可以使用global.asax文件并向 Session_OnStart 事件添加一些自定义代码,您可以获取用户信息并在可以提供管理页面的数据库中进行更新。