ASP.NET 的 SessionState 有五種模式
- InProc
- <sessionState mode=”InProc” timeout=”20″></sessionState>
- 預設的模式
- Session 存在 IIS process(w3wp.exe) 裡
- IIS 重啟或 ASP.NET State Service 重啟 session 會消失
- StateServer
- <sessionState mode=”StateServer” stateConnectionString=”tcpip=127.0.0.1:42424″ timeout=”20″></sessionState>
- Session 存在 ASP.NET State Service 的 process(aspnet_state.exe) 裡
- Session 不會因為 IIS 重啟消失
- 多台 Server 可以共用同個 Session
- ASP.NET State Service 重啟 session 會消失
- ASP.NET State Service 默認的 port 為 42424,如果要改 port,需要打開 regedit 編輯 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters 的 port
- 如果 stateConnectionString 不是 127.0.0.1 或者 localhost,需要將 AllowRemoteConnection 改為 1
- SQLServer
- <sessionState mode=”SQLServer” sqlConnectionString=””></sessionState>
- Session 存在資料庫裡
- Custom
- MangoDB、Redis 等各種儲存體都可以
- 繼承 SessionStateStoreProviderBase 並實作即可
- Off
- <sessionState mode=”Off”></sessionState>
- 關閉 Session
參考資料
https://learn.microsoft.com/en-us/previous-versions/aspnet/ms178586(v=vs.100)