![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yMwAzM2MTM1UTMtQDN4IzM1QDMxATMzAzNxAjMtYDM1cjN48CXzAzNxAjMvwlNwUzN2gzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
【常見Session丢失原因】
1、Session逾時,使用者打開頁面,頁面長時間不操作會導緻此原因
2、IIS應用程式池回收,或者重新開機
3、Web.Config修改,即IIS應用程式池重新開機
4、dll被替換或者動态頁面修改,即IIS應用程式池重新開機
5、防毒軟體對.config檔案進行掃描,可能會導緻IIS應用程式池回收
6、使用者浏覽器禁用cookie
7、其他原因
其他原因有點不負責,但是好多程式員無法查明是什麼原因導緻Session丢失,但Session丢失我歸結為兩大類,一個是資料的Key丢了,一個是Session内容資料庫的丢了,大家這樣就好了解了,使用者浏覽器禁用cookie一定是Key沒了。IIS應用程式池回收必定會導緻Session的内容緩存表丢失,當然還有一些其他原因。
解決Session丢失的漫長路
解決過Session丢失的都會用到這幾種方法
1、InProc:将Session存到程序内。
2、StateServer:将Session存到獨立的狀态服務中(Asp.Net State Service)。
3、SqlServer:将Session存到SqlServer中。
4、Cookieless:設定用戶端Session存儲的方式。
用了這些方法之後,有的是該丢還丢,有的是穩定了速度卻慢了。
還有個這個Custom自定義模式,大家不要還停留在非開源模式下解決問題的思想,找找開源項目,一定能找到的,有人說ASP.NET上哪裡找開源啊,非常簡單NuGet,如果想了解開源,一定要學會使用NuGet。
轉載于:https://www.cnblogs.com/Yue0327/p/6530259.html