asp.net 在线用户列表统计

原创 2011年12月13日 14:43:11
在线人员统计,Global.asax:

using System;

using System.Collections;

using System.Configuration;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.SessionState;

using System.Xml.Linq;

 

namespace CountPerson

{

    publicclass Global: System.Web.HttpApplication

    {

 

        protectedvoid Application_Start(objectsender, EventArgs e)

        {

            #region OnlineUsers

            try

            {

                DataTable userTable = newDataTable();

                userTable.Columns.Add("SessionID");

               userTable.Columns.Add("UserIP");

               userTable.Columns.Add("Browser");

               userTable.Columns.Add("OSName");

 

               userTable.AcceptChanges();

                Application.Lock();

                Application["OnlineUsers"] = userTable;

               Application.UnLock();

            }

            catch

            {

 

            }

            #endregion

        }

 

        protectedvoid Session_Start(objectsender, EventArgs e)

        {

            try

            {

                string sessionid = Session.SessionID;

                string userIP = Request.UserHostAddress;

                HttpBrowserCapabilities bc = Request.Browser;

                string osName = "win2000";

                //判断操作系统

                switch (bc.Platform)

                {

                    case "WinNT5.1":

                    case "WinXP":

                        osName = "Windows XP";

                        break;

                    case "WinNT 5.0":

                        osName = "Win2000";

                        break;

                    case "WinNT":

                        osName = "Win2003";

                        break;

                    default:

                        osName = bc.Platform;

                        break;

                }

                string browser = bc.Type;

                DataTable userTable = (DataTable)Application["OnlineUsers"];

                if (userTable == null)

                    return;

                DataRow[] curRow = userTable.Select("SessionID='" + sessionid + "'");

                if (curRow.Length == 0)

                {

                    DataRow row = userTable.NewRow();

                    row["SessionID"] = sessionid;

                    row["UserIP"] = userIP;

                    row["Browser"] = browser;

                    row["OSName"] = osName;

 

                   userTable.Rows.Add(row);

                   userTable.AcceptChanges();

 

                    Application.Lock();

                    Application["OnlineUsers"] = userTable;

                   Application.UnLock();

                }

            }

            catch

            {

            }

        }

 

        protectedvoid Application_BeginRequest(object sender, EventArgse)

        {

 

        }

 

        protectedvoid Application_AuthenticateRequest(object sender, EventArgse)

        {

 

        }

 

        protectedvoid Application_Error(objectsender, EventArgs e)

        {

 

        }

 

        protectedvoid Session_End(objectsender, EventArgs e)

        {

            HashtableonlineUserHashtable = (Hashtable)Application["OnlineUsers"];

           onlineUserHashtable.Remove(Request.UserHostAddress);

            try

            {

                string sessionid = Session.SessionID;

                DataTable userTable = (DataTable)Application["OnlineUsers"];

                if (userTable == null)

                    return;

                foreach (DataRowrow in userTable.Select("SessionID='" + sessionid + "'"))

                {

                   userTable.Rows.Remove(row);

                }

               userTable.AcceptChanges();

                Application.Lock();

                Application["OnlineUsers"]= userTable;

                Application.UnLock();

            }

            catch

            {

            }

        }

 

        protectedvoid Application_End(objectsender, EventArgs e)

        {

 

        }

    }

}

 

在页面中使用GridView绑定用户列表:

protected void Page_Load(object sender, EventArgse)

        {

            DataTableuserTable = null;

            try

            {

                userTable = (DataTable)Application["OnlineUsers"];

            }

            catch

            {

                Response.Write("获得内存在线数据失败");

            }

            if(userTable != null)

            {

                GridView1.DataSource= userTable;

               GridView1.DataBind();

            }

        }


版权声明:本文为博主原创文章,未经博主允许不得转载。

Asp.Net在线统计用户列表

1、在线用户列表的实现在ASP时代,要实现一个网站的在线用户列表显示功能的惯用做法是修改global.asa文件中的:Application_Start、Session_Start和Session_E...

Asp.Net 中如何判断用户是否在线

Asp.Net 中如何判断用户是否在线:我在这里只提供具体的思路,不提供代码的实现这里的在线统计是靠Session_Start(object sender, EventArgs e),Session_...

ASP.NET中利用Application和Session统计在线人数、历史访问量

通常在整个过程中,大多数人对Application_End()这个事件的疑问是最大的,因为如果您只是在VisualStudio上做的测试的话,关闭系统时,没有触发Application_End()事件...

显示在线用户列表

用监听器实现在线用户列表   需求:显示当前都有哪些用户在线,将用户名显示在页面上。 思路: 1,首先建立JavaBean,例如Manager对象,建立username,password字段,...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Asp.Net制作聊天室(显示在线用户列表,禁止发言,允许发言,踢出聊天室,退出聊天室)

最近做一个项目,需要一个聊天室所以就做了,因为是第一次做,而且也不清楚别人聊天室是怎么做的,只能闭门造车了,憋了一周多才做出来,而且还有很多地方不太完美。在此贴出来,希望大家多多指点。聊天室的基本效果...

ASP.NET中在线用户统计

统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率。现在,我们就介绍一个简单明了的方法...

ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题

 最近所做的一个项目需要用到的在线用户列表,上网搜索了一下发现现有的解决方案对用户意外退出的处理均不是太理想。一般来说,用户离开系统的方式有三种: 主动注销、会话超时、直接关闭浏览器,对于前两种,我们...
  • zzk2010
  • zzk2010
  • 2011年02月21日 16:21
  • 1012

ASP.NET在线用户

  • 2009年08月19日 08:31
  • 9KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net 在线用户列表统计
举报原因:
原因补充:

(最多只允许输入30个字)