asp.net 線上使用者列表統計

暖楓無敵發表於2011-12-13
線上人員統計,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();

            }

        }


相關文章