選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
1 分鐘閱讀時間 (68 個字)

ASP.NET Session

pexels-photo-1591060

       大家好,我是Andy,最近在客戶端處理問題時,常常在帳號登入後沒多久,還未到系統設定的逾時時間,就被強制登出。後來發現是因為session各自儲存在自己的站台上,導致當登入後的請求與第一次登入時的請求為不同站台時,會因為系統找不到session,而被認定為超過逾時時間。

以下會稍微介紹Asp.net的幾種session模式


 InProc

Asp.net預設的session模式,session資訊被儲存在該站台的程序當中,當站台服務停止時,session隨即消失

 StateServer

將session儲存在另一個程序當中,當站台服務停止時,session資訊仍會保留,同時,透過設定,session可以被其他主機上的站台存取

 SqlServer

將session儲存在Sql Server的資料庫當中,和StateServer一樣,session資訊可以長期儲存

 Custom

使用其他的session儲存機制

 Off

不使用session

 這裡我使用的是StateServer,以下會說明此模式的設定流程


 設定web.config中的session模式

 開啟Asp.net state service

 透過regedit設定Asp.net state service(此服務預設只允許本機存取,需在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters路徑下將AllowRemoteConnection的值修改為1)

 各站台上的web.config中須使用同一組machineKey,machineKey資訊可以由IIS生成

以上是這次針對Asp.net session的介紹,謝謝大家!

PWA - 開發注意事項
AspNetBoilerplate(ABP) - Background Job 介紹

相關文章

 

評論 1

David Chou (周彥江) 於 2021/08/16, 週一 11:21

StateServer 的防火牆需對所有的 WebServer 開放 TCP 42424 埠

StateServer 的防火牆需對所有的 WebServer 開放 TCP 42424 埠
已經注冊了? 這裡登入
Guest
2024/05/19, 週日

Captcha 圖像