[ASP.NET]使用sql server儲存Session

[ASP.NET]使用sql server儲存Session

上課上到記錄一下

1. 開啟vs2010 commandline

clip_image002

2. 假設我們要將Session存在本機上的StateDB中

輸入

設定方式請參考網頁

ASP.NET SQL Server 註冊工具 (Aspnet_regsql.exe)

clip_image004

3. 開啟伺服器總管並做設定

clip_image005

clip_image006

4. 可以看到新增連線,Session會存在ASPStateTempSessions,並複製連線字串

clip_image007

clip_image008

5. 修改web.config,加入下列這行於<system.web>標籤下

6. 拉個網頁設計畫面

clip_image010

程式碼


    Inherits System.Web.UI.Page
 
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Session("User") = "testaa"
    End Sub
 
    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim resultsession As String = CType(Session("User"), String)
 
        If String.IsNullOrEmpty(resultsession) = True Then
            Label1.Text = resultsession
        Else
            Label1.Text = "Empty!"
        End If
 
    End Sub
End Class
 

7. 測試結果可以看到Session寫入到資料庫了,寫入時間為資料庫主機上的時間

clip_image012

注意事項:

1. 資料庫記錄的時間為UTC時間,做時間計算時要注意。

2. 當客戶端的發出新的要求到主機端或者與主機端有互動,Session的逾時會重新計算。

3. 系統會引用一個作業(ASPState_Job_DeleteExpiredSessions),每分鐘定期清理逾時的session。