2009年8月31日 星期一

ASP.NET StateServer 工作階段狀態模式

StateServer 模式會將工作階段狀態存放在處理序中 (稱為 ASP.NET 狀態服務),這個處理序則與 ASP.NET 背景工作處理序或 IIS 應用程式集區有所不同。使用此模式可以確保工作階段狀態在 Web 應用程式重新啟動時會保存下來,並且讓 Web 伺服陣列中的多個 Web 伺服器都能夠使用工作階段狀態。

若要使用 StateServer 模式,您必須先確定 ASP.NET 狀態服務正在做為工作階段存放區的伺服器上執行。已安裝 ASP.NET 和 .NET Framework 時,ASP.NET 狀態服務會安裝為服務。ASP.NET 狀態服務會安裝在下列位置:
systemroot\Microsoft.NET\Framework\versionNumber\aspnet_state.exe

若要將 ASP.NET 應用程式設定為使用 StateServer 模式,請在應用程式的 Web.config 檔中執行下列動作:
將 sessionState 項目的 mode 屬性設為 StateServer。
將 stateConnectionString 屬性設為 tcpip=serverName:42424。

依序設定步驟:
(1) 到C:\windows\Microsoft.NET\Framework\v2.0.50727這資料夾執行aspnet_state.exe
(2) 在服務中,會出現一個"ASP.NET 狀態服務"的服務項目,但是未啟用,先別急著啟用
(3) 執行regedit,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters這個目錄
(4) 設定AllowRemoteConnection為1
(5) 設定Port為要執行的Port Number
(6) 啟動"ASP.NET 狀態服務"的服務
(7) 到web.config中,將sessionState的屬性改為
mode="StateServer" stateConnectionString="tcpip=:"
(8) 重新啟動IIS即可

另外微軟MSDN也提供了使用SQL Server來存放Session的解決方案
http://support.microsoft.com/kb/317604

沒有留言:

張貼留言