C#怎麼統計網站當前在線人數

1.問題背景

       c#網站怎麼合理的統計在線人數?我想通過全局變量來統計軟件的使用情況,當啟動軟件時向服務器的用戶表寫開始使用時間,正常退出時寫一個結束使用時間,來統計用戶的在線使用情況。

       但是有一個問題:用戶可能不會正常退出,比如電腦斷電了,或是直接從進程裏面結束… … 當這種情況下這個結束使用時間怎麼獲取呢?於是,一場追逐夢想的征途開始了~~~

2.創建項目

打開vitualstudio2019,新建一個網站,然後添加新項,新建一個login.aspx和index.aspx頁面。再添加新項,選擇全局應用程序類,該頁面為Global.asax。

   2.1.打開Global.asax頁面,在Application_start()方法下寫入以下代碼:

Application.Add("zzzonline", 0);

   2.2.在Session_start()方法中寫入以下代碼:

Application.Lock();
Application["zzzonline"] = Convert.ToInt32(Application["zzzonline"]) + 1;
Application.UnLock();

   2.3.在Session_end()方法中寫入以下代碼:

// 在會話結束時運行的代碼。  
// 注意: 只有在 Web.config 文件中的 sessionstate 模式設置為
// InProc 時,才會引發 Session_End 事件。如果會話模式設置為 StateServer 
// 或 SQLServer,則不會引發該事件。
Application.Lock();
Application["online"] = (int)Application["online"] - 1;
Application.UnLock();

  2.4.到這裡我們的在線人數就已經獲取到了,可以通過Label控件或者其他控件輸出當前在線人數,如:

Label1.Text=Application["zzzonline"].ToString()+""

總結:這篇隨筆裏面我們記錄了通過asp.net全局變量及Application統計在線人數,在新會話產生時增加在線人數,超時未響應則減去當前計數,這裡超時時長可以在webconfig中設置,默認為5分鐘;在線人數永遠都不可能是個精確的值因為它要受時間和性能的約束。如果有更好的方法,歡迎留言討論!

Tags: