ASP.NET Session超時問題解決方法總結
最近在做ASP.NET項目時,測試網(wǎng)站老是取不出Session中的值,在網(wǎng)上搜索了一下,找到一些解決方法,記錄在這里。***使用存儲在StateServer中的辦法解決了問題。
SessionState 的Timeout(ASP.NET Session超時),其主要原因有三種
一:有些殺病毒軟件會去掃描您的Web.Config文件,那時Session肯定掉,這是微軟的說法。
二:程序內部里有讓Session掉失的代碼,及服務器內存不足產生的。
三:程序有框架頁面和跨域情況。
ASP.NET Session超時的***種解決辦法是:使殺病毒軟件屏蔽掃描Web.Config文件(程序運行時自己也不要去編輯它)
第二種是檢查代碼有無Session.Abandon()之類的。
第三種是在Window服務中將ASP.NET State Service 啟動。
下面是幫助中的內容:
(ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconsessionstate.htm)
ASP.NET 提供一個簡單、易于使用的會話狀態(tài)模型,您可以使用該模型跨多個 Web 請求存儲任意數(shù)據(jù)和對象。它使用基于字典的、內存中的對象引用(這些對象引用存在于 IIS 進程中)緩存來完成該操作。使用進程內會話狀態(tài)模式時請考慮下面的限制:
使用進程內會話狀態(tài)模式時,如果 aspnet_wp.exe 或應用程序域重新啟動,則會話狀態(tài)數(shù)據(jù)將丟失。這些重新啟動通常會在下面的情況中發(fā)生:
在應用程序的 Web.config 文件的 < processModel> 元素中,設置一個導致新進程在條件被滿足時啟動的屬性,例如 memoryLimit。
修改 Global.asax 或 Web.config 文件。
更改到 Web 應用程序的 Bin 目錄。
用殺毒軟件掃描并修改 Global.asax 文件、Web.config 文件或 Web 應用程序的 Bin 目錄下的文件。
如果在應用程序的 Web.config 文件的 < processModel> 元素中啟用了網(wǎng)絡園模式,請不要使用進程內會話狀態(tài)模式。否則將發(fā)生隨機數(shù)據(jù)丟失。
ASP.NET Session超時的解決方法還有這二種:
一:在***個頁面置了SESSION,然后REDIRECT去第二個頁面。解決方法是在REDIRECT中設置endResponse為FALSE。
二: ASP.NET中使用了ACCESS數(shù)據(jù)庫,而且數(shù)據(jù)庫是放在bin目錄中的。解決方法是不要放會更新的文件在BIN目錄中。
參考:http://www.dotnet247.com/247reference/msgs/58/290316.aspx
【編輯推薦】