【ASP.NET】SessionState 簡易筆記

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)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *