使用Application和SessionID实现在线用户列表统计
2010-05-28 22:22
831 查看
Application是一个共享对象,意味着所有访问此应用程序的客户均可以看到这个Application对象的值。使用Application和SessionID来统计当前在线人数。
代码
还有一篇博文,通过Application和SessionID保证一个帐号只有一个在线http://www.cnblogs.com/heaiping/archive/2010/01/19/1651835.html
代码
<%@ Application Language="C#" %> <script runat="server"> void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 System.Data.DataTable onlineUser = new System.Data.DataTable(); onlineUser.Columns.Add("SessionID"); onlineUser.Columns.Add("userIP"); onlineUser.Columns.Add("browser"); onlineUser.Columns.Add("osName"); onlineUser.AcceptChanges(); Application.Lock(); Application["onlineUser"] = onlineUser; Application.UnLock(); } void Application_End(object sender, EventArgs e) { // 在应用程序关闭时运行的代码 } void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 } void Session_Start(object sender, EventArgs e) { // 在新会话启动时运行的代码 string sessionID = Session.SessionID; string userIP = Request.UserHostAddress; HttpBrowserCapabilities bc = Request.Browser; string osName = bc.Platform; string browser = bc.Type; System.Data.DataTable userDt = Application["onlineUser"] as System.Data.DataTable; if (userDt == null) { return; } System.Data.DataRow[] currentRow=userDt.Select("SessionID='"+sessionID+"'"); if (currentRow.Length <= 0) { //当前用户没有在线 System.Data.DataRow newRow =userDt.NewRow(); newRow["SessionID"] = sessionID; newRow["userIP"] = userIP; newRow["browser"] = browser; newRow["osName"] = osName; userDt.Rows.Add(newRow); userDt.AcceptChanges(); Application.Lock(); Application["onlineUser"] = userDt; Application.UnLock(); } } void Session_End(object sender, EventArgs e) { // 在会话结束时运行的代码。 // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer // 或 SQLServer,则不会引发该事件。 string sessionID = Session.SessionID; System.Data.DataTable userDt = Application["onlineUser"] as System.Data.DataTable; if (userDt == null) { return; } foreach (System.Data.DataRow dr in userDt.Select("SessionID='" + sessionID + "'")) { userDt.Rows.Remove(dr); } userDt.AcceptChanges(); Application.Lock(); Application["onlineUser"] = userDt; Application.UnLock(); } </script>
还有一篇博文,通过Application和SessionID保证一个帐号只有一个在线http://www.cnblogs.com/heaiping/archive/2010/01/19/1651835.html
相关文章推荐
- 使用Application和SessionID实现在线用户列表统计
- J2EE使用session监听实现在线用户明细及数量统计
- java session HttpSessionListener、HttpSessionBindingListener使用区别,实现在线人数统计以及踢出用户
- java session HttpSessionListener、HttpSessionBindingListener使用区别,实现在线人数统计以及踢出用户
- ASP.NET中使用Application对象实现简单在线人数统计功能
- 使用HttpSessionListener和ServletContextListener实现在线人数和历史访问人数统计的问题
- 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- 用session监听器简单实现统计在线用户数
- application 和 session区别以及使用application存储在线用户的session信息
- 使用application统计在线用户数
- [置顶] 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- HttpSessionListener实现对在线用户的精确统计
- ASP.NET中在线用户统计 application和cache实现缓存的差异 ASP.net 验证码(C#)
- 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- 基于Session的在线用户统计实现
- java使用监听器实现对在线用户的统计
- session、application事件监听器实现在线用户列表
- ASP.NET中使用Application对象实现简单在线人数统计功能
- 使用redis实现获取在线用户列表