ASP.NET 提供三種 Session 狀態儲存模式:In-Process(預設)、State Server、SQL Server。若您的應用程式部署於 Web 伺服器陣列,或需在應用程式回收時保留 Session 資料,使用 SQL Server 儲存 Session 是最穩健的選擇。本文將逐步說明如何設定。
執行 .NET Framework 安裝目錄下的 InstallSqlState.sql 腳本,預設路徑如下:
C:\Windows\Microsoft.NET\Framework\v1.0.2914\InstallSqlState.sql
此腳本會在 SQL Server 中建立 ASPState 資料庫及相關儲存程序、資料表。
在 <system.web> 區段加入或修改 <sessionState> 元素:
<sessionState
mode="SQLServer"
sqlConnectionString="data source=YourSQLServer;user id=sa;password=YourPassword"
cookieless="false"
timeout="20"
/>
SQLServer。ASPState 資料庫的讀寫權限。false 表示使用 Cookie 傳遞 Session ID(預設);true 則使用 URL 嵌入方式。設定完成後,重新啟動應用程式(或修改 Web.config 觸發重啟)。之後您即可像往常一樣使用 Session["Key"] = value 讀寫 Session,資料將自動持久化至 SQL Server。
ASPState 資料庫的 db_owner 或至少 EXECUTE 相關儲存程序的權限。ASPState 資料庫放置於獨立磁碟陣列,並適當調整記錄檔大小與自動成長設定。透過 SQL Server 儲存 Session,您獲得了 Session 資料的持久化、跨伺服器共享、應用程式回收不遺失等企業級特性。設定僅需三步驟,是 Web Farm 部署的標準配置。