在ASP.NET中查找所有用户的会话状态

时间:2012-03-23 08:03:43

标签: asp.net session

我使用VS2010,C#来开发ASP.NET Web应用程序,我在我的应用程序中创建了一些会话,有什么方法可以让我了解所有用户的会话吗?我认为这应该是可能的,因为会话是由服务器代码创建的,我想知道所有用户的会话状态,例如我想知道我每次有多少在线用户(通过查看session [“userid”]) ,有什么办法吗?

感谢

4 个答案:

答案 0 :(得分:1)

无法访问除您自己以外的所有其他用户的会话。

你也有一个会议

您可以做的是将一些数据写入Application对象或Cache对象。

这样 - 无论用户是谁,您都可以从每个请求中访问它。

答案 1 :(得分:1)

  

无法访问所有其他用户的会话。你是   允许访问您自己的会话对象而不是其他人。

但是你可以使用Application对象和其他方法来实现它。

参考:Getting number of active sessions (online users counter) with ASP.NET

处理global.asax文件中的应用程序事件:

//When application start first time set onilne user to 0
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

Application("OnlineUsers") = 0

End Sub

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)

Application.Lock()
Application("OnlineUsers") = CInt(Application("OnlineUsers")) + 1

Application.UnLock()

End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)

Application.Lock()
Application("OnlineUsers") = CInt(Application("OnlineUsers")) - 1

Application.UnLock()

End Sub

其他实施方法参考:
Getting online users
ASP.NET Membership – Show list of users online

答案 2 :(得分:1)

如果您需要访问会话,我强烈建议您使用会话状态模式作为SQLServer。 http://msdn.microsoft.com/en-us/library/ms178586.aspx 然后,您可以访问非常容易存储所有会话的sqlServer表。

答案 3 :(得分:1)

您可以从任何地方访问所有会话状态,只需创建一个HttpSessionState集合并将其保存到应用程序状态...当会话启动时将其添加到集合

示例:Application("SessionCollection").Add(Session)

因此,您可以访问任何会话状态(您可以实现会话查找功能以简化任务)

您可以在集合中实现一个计时器,该计时器将检查所有会话状态并删除死亡状态

适用于每个版本的ASP.Net