程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> ASP.NET Session丟失的解決方案

ASP.NET Session丟失的解決方案

編輯:關於C#
 

之前博客後台登錄後跳轉頁面一直會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為什麼會丟失?原因在於

  1. 服務器的一些安全程序掃描了Web.config文件導致session丟失。

  2. 程序的框架頁面和跨域問題

  3. 程序的內部代碼清除,或者內存不足

先來看下網上的解決方案

第一種解決辦法是:使殺病毒軟件屏蔽掃描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中

這裡我用的是第一種。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved