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