最近在做asp.net項目時,測試網站老是取不出session中的值,在網上搜索了一下,找到一些解決方法,記錄在這里。最后使用存儲在stateserver中的辦法解決了問題。
sessionstate 的timeout),其主要原因有三種。
一:有些殺病毒軟件會去掃描您的web.config文件,那時session肯定掉,這是微軟的說法。
二:程序內部里有讓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 提供一個簡單、易于使用的會話狀態模型,您可以使用該模型跨多個 web 請求存儲任意數據和對象。它使用基于字典的、內存中的對象引用(這些對象引用存在于 iis 進程中)緩存來完成該操作。使用進程內會話狀態模式時請考慮下面的限制:
使用進程內會話狀態模式時,如果 aspnet_wp.exe 或應用程序域重新啟動,則會話狀態數據將丟失。這些重新啟動通常會在下面的情況中發生:
在應用程序的 web.config 文件的 <processmodel> 元素中,設置一個導致新進程在條件被滿足時啟動的屬性,例如memorylimit。
修改 global.asax 或 web.config 文件。
更改到 web 應用程序的 /bin 目錄。
用殺毒軟件掃描并修改 global.asax 文件、web.config 文件或 web 應用程序的 /bin 目錄下的文件。
如果在應用程序的 web.config 文件的 <processmodel> 元素中啟用了網絡園模式,請不要使用進程內會話狀態模式。否則將發生隨機數據丟失。
還有這二種:
一:在第一個頁面置了session,然后redirect去第二個頁面。解決方法是在redirect中設置endresponse為false。
二: asp.net中使用了access數據庫,而且數據庫是放在bin目錄中的。解決方法是不要放會更新的文件在bin目錄中。
參考:http://www.dotnet247.com/247reference/msgs/58/290316.aspx
共2頁: 上一頁 1 [2] 下一頁
新聞熱點
疑難解答