之前博客後台登錄後跳轉頁面一直會Session丟失,導致文章編輯到一半跳回了登錄頁面,簡直不能忍!遂解決下問題,記錄下來以後用的時候可以看一下。
修改之前的web.config文件Session段:
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20"/>
mode參數 off 不使用 InProc 設置為將Session存儲在進程內,就是ASP中的存儲方式,這是默認值。 StateService 設置為將Session存儲在獨立的狀態服務中。 SQLServer 設置將Session存儲在SQL Server中。 修改之前我們先來了解一下ASP.NET Session為什麼會丟失?原因在於
服務器的一些安全程序掃描了Web.config文件導致session丟失。
程序的框架頁面和跨域問題
程序的內部代碼清除,或者內存不足
先來看下網上的解決方案
第一種解決辦法是:使殺病毒軟件屏蔽掃描Web.Config文件(程序運行時自己也不要去編輯它)
第二種是檢查代碼有無Session.Abandon()之類的。
第三種是在Window服務中將ASP.NET State Service 啟動。
最常用的解決方案有兩種
1.將session存在StateServer。
在使用StateServer或者SQLServer存儲Session時,所有需要保存到Session的對象除了基本數據類型(默認的數據類型,如int、string等)外,都必須序列化。只需將[Serializable]標簽放到要序列化的類前就可以了。
如果在本地測試出現異常,請在服務中將ASP.NET服務啟動
2.將session保存在Sql Server中
這裡我用的是第一種。