[VB] ASP.NET 計算線上人數方法

摘要:[VB] ASP.NET 計算線上人數方法

前言


  在 ASP.NET 中如果要做類似計算進入網站的人數處理話,可以透過 Application 全域變數處理,請看以下範例。

 

範例


Step 1

  在 MasterPage 或者要計算之頁面加入以下程式碼:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            '計算在線人數
            Label2.Text = Application("online").ToString
End Sub

 

Step 2

  在專案內加入一個 Global.asax ,加入以下程式碼:

Imports System.Web.SessionState
Imports System.Data
Imports System.Data.SqlClient

Public Class Global_asax
    Inherits System.Web.HttpApplication

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' 在應用程式啟動時引發

        '將 Application 全域變數初始化為 0
        Application("online") = 0
    End Sub

    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' 在工作階段啟動時引發

        'Session 存活時間,如需要 Login 則將此段註解
        Session.Timeout = 1
        'Application 鎖定
        Application.Lock()
        '在線人數 +1
        Application("online") = CInt(Application("online")) + 1
        '更新總瀏覽人數
        UpdateCount(1)
        'Application 解鎖
        Application.UnLock()
    End Sub

    Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
        ' 在每個要求開頭引發
    End Sub

    Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
        ' 在一開始嘗試驗證使用時引發
    End Sub

    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        ' 在錯誤發生時引發
    End Sub

    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
        ' 在工作階段結束時引發

        Application.Lock()
        '當 Session 結束後,將在線人數 -1
        Application("online") = CInt(Application("online")) - 1
        Application.UnLock()
    End Sub

    Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
        ' 在應用程式結束時引發

        '應用程式結束時將在線人數歸 0
        Application("online") = 0
        UpdateCount(2)
    End Sub

    Public Sub UpdateCount(ByVal state As String)
        '更新資料庫語法
    End Sub
End Class

 

參考資料


Application Object (IIS)

 

 


以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教
如有侵權內容也請您與我反應~謝謝您 :)