[ASP.NET]使用sql server儲存Session
上課上到記錄一下
1. 開啟vs2010 commandline
2. 假設我們要將Session存在本機上的StateDB中
輸入
設定方式請參考網頁
ASP.NET SQL Server 註冊工具 (Aspnet_regsql.exe)
3. 開啟伺服器總管並做設定
4. 可以看到新增連線,Session會存在ASPStateTempSessions,並複製連線字串
5. 修改web.config,加入下列這行於<system.web>標籤下
6. 拉個網頁設計畫面
程式碼
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寫入到資料庫了,寫入時間為資料庫主機上的時間
注意事項:
1. 資料庫記錄的時間為UTC時間,做時間計算時要注意。
2. 當客戶端的發出新的要求到主機端或者與主機端有互動,Session的逾時會重新計算。
3. 系統會引用一個作業(ASPState_Job_DeleteExpiredSessions),每分鐘定期清理逾時的session。