asp.net 實現線上人數統計
阿新 • • 發佈:2019-01-09
這種方法不是很準確,因為它有一個超時時間,這裡設定的是一分鐘,也就是說一分鐘後才會將對話關閉,觸發Session_End事件,而VS2005中,一般預設是20分鐘,可以通過設定Session.Timeout = 1;//超時時間來改變,最小是一分鐘.在解決方案資源管理器中新增新項,Global.asax,其中程式碼如下: <%@ Application Language="C#" %> <script runat="server"> void Application_Start(object sender, EventArgs e) { // 在應用程式啟動時執行的程式碼 Application["count"] = 0; } void Application_End(object sender, EventArgs e) { // 在應用程式關閉時執行的程式碼 } void Application_Error(object sender, EventArgs e) { // 在出現未處理的錯誤時執行的程式碼 } void Session_Start(object sender, EventArgs e) { // 在新會話啟動時執行的程式碼 Session.Timeout = 1;//超時時間 Application.Lock(); Application["count"] = (int)Application["count"]+1; Application.UnLock(); } void Session_End(object sender, EventArgs e) { // 在會話結束時執行的程式碼。 // 注意: 只有在 Web.config 檔案中的 sessionstate 模式設定為 // InProc 時,才會引發 Session_End 事件。如果會話模式設定為 StateServer // 或 SQLServer,則不會引發該事件。 //Session.Abandon(); Application.Lock(); Application["count"] = (int)Application["count"] - 1; Application.Lock(); } </script> 在首頁面寫入以下: protected void Page_Load(object sender, EventArgs e) { Response.Write("當前線上人數:"+Application["count"].ToString()); }
在這裡可以加入資料庫操作,統計總共訪問人數,程式每次啟動時,都將累計訪問人數從資料庫中讀出來,在關閉時寫入資料到資料庫即可,為避免突然斷電等情況,也可以第天或者間隔多久寫一次累計訪問人數,或者每次也行,當然訪問量不能過大.