下面介紹如何進行ASP.NET中網站訪問量的統計。
一、建立一個資料表IPStat用於存放使用者資訊
我在IPStat表中存放的使用者資訊只包括登入使用者的IP(IP_Address),IP來源(IP_Src)和登入時間(IP_DateTime),些表的資訊本人只儲存一天的資訊,如果要統計每個月的資訊則要儲存一個月。因為我不太懂對資料日誌的操作,所以建立此表,所以說我笨吧,哈哈。
二、在Global.asax中擷取使用者資訊
在Global.asax的Session_Start即新會話啟用時擷取有關的資訊,同時在這裡實現線上人數、訪問總人數的增量統計,代碼如下:
void Session_Start(object sender, EventArgs e) {
//擷取訪問者的IP
string ipAddress = Request.ServerVariables["REMOTE_ADDR"];
//擷取訪問者的來源
string ipSrc;
//判斷是否從搜尋引擎導航過來的
if (Request.UrlReferrer == null) {
ipSrc = "";
}
else {
//擷取來源地址
ipSrc = Request.UrlReferrer.ToString();
}
//擷取訪問時間
DateTime ipDatetime = DateTime.Now;
//儲存IP資訊到資料庫中
IPControl cont = new IPControl();
cont.AddIP(ipAddress, ipSrc, ipDatetime);
//擷取使用者訪問的頁面
string pageurl = Request.Url.ToString();
//判斷訪問的是否是預設頁
if (pageurl.EndsWith("IPStat.ASPx")) {
//鎖定變數
Application.Lock();
//為頁面訪問量+1
Application["StatCount"] = int.Parse(Application["StatCount"].ToString()) + 1;
//解鎖
Application.UnLock();
}
//鎖定變數
Session.Timeout = 10;
//設定逾時為10分鐘
Application.Lock();
Application["countSession"] = Convert.ToInt32(Application["countSession"]) + 1;
//訪問總人數+1
Application["onlineWhx"] = (int)Application["onlineWhx"] + 1;
//線上人數加+1
Session["login_name"] = null;
//解鎖
Application.UnLock();
}
提醒一句,別忘了下面的代碼,以實現在使用者離線時,將線上人數減去1。
void Session_End(object sender, EventArgs e) {
// 在會話結束時啟動並執行代碼。
// 注意: 只有在 Web.config 檔案中的 sessionstate 模式設定為 InProc 時,
才會引發 Session_End 事件。
如果會話模式設定為 StateServer
// 或 SQLServer,則不會引發該事件。
//鎖定變數
Application.Lock();
Application["onlineWhx"] = (int)Application["onlineWhx"] - 1;
//線上人數減-1
Session["login_name"] = null;
//解鎖
Application.UnLock();
}
三、將以上有關資訊儲存到資料庫IPStat
ASP.NET中網站訪問量統計的最後一個實現步驟,就是建立了一個擷取IP資料資訊的類IPControl(),用來實現對資料庫IPStat資料的操作,關於IPControl()類的內容,因為它是C#中對資料庫的操作,以解sql server 資料庫,就能看懂它,這裡就不作介紹了,請點擊該連結查看。
為了實現將使用者IP資訊存入資料庫,在上面代碼中對IPControl()進行調用
//儲存IP資訊到資料庫中
IPControl cont = new IPControl();
cont.AddIP(ipAddress, ipSrc, ipDatetime);
參數ipAddress為使用者IP,ipSrc為使用者來源, ipDatetime為使用者進入時間。
以上就實現了ASP.NET中網站訪問量的統計。