Session丟失的解決辦法小結

2022-03-05 16:45:04 字數 2096 閱讀 9834

最近在做asp.net專案時,測試**老是取不出session中的值,在網上搜尋了一下,找到一些解決方法,記錄在這裡。最後使用儲存在stateserver中的辦法解決了問題。

sessionstate 的timeout),其主要原因有三種。

一:有些殺病毒軟體會去掃瞄您的web.config檔案,那時session肯定掉,這是微軟的說法。

二:程式內部裡有讓session掉失的**,及伺服器記憶體不足產生的。

三:程式有框架頁面和跨域情況。

第一種解決辦法是:使殺病毒軟體遮蔽掃瞄web.config檔案(程式執行時自己也不要去編輯它)

第二種是檢查**有無session.abandon()之類的。

第三種是在window服務中將asp.net state service 啟動。

下面是幫助中的內容:

(ms-help:

asp.net 提供乙個簡單、易於使用的會話狀態模型,您可以使用該模型跨多個 web 請求儲存任意資料和物件。它使用基於字典的、記憶體中的物件引用(這些物件引用存在於 iis 程序中)快取來完成該操作。使用程序內會話狀態模式時請考慮下面的限制:

使用程序內會話狀態模式時,如果 aspnet_wp.exe 或應用程式域重新啟動,則會話狀態資料將丟失。這些重新啟動通常會在下面的情況中發生:

在應用程式的 web.config 檔案的 元素中,設定乙個導致新程序在條件被滿足時啟動的屬性,例如 memorylimit。

修改 global.asax 或 web.config 檔案。

更改到 web 應用程式的 \bin 目錄。

用防毒軟體掃瞄並修改 global.asax 檔案、web.config 檔案或 web 應用程式的 \bin 目錄下的檔案。

如果在應用程式的 web.config 檔案的 元素中啟用了網路園模式,請不要使用程序內會話狀態模式。否則將發生隨機資料丟失。

還有這二種:

一:在第乙個頁面置了session,然後redirect去第二個頁面。解決方法是在redirect中設定endresponse為false。

二: asp.net中使用了access資料庫,而且資料庫是放在bin目錄中的。解決方法是不要放會更新的檔案在bin目錄中。

參考:正常操作情況下session會無故丟失。因為程式是在不停的被操作,排除session超時的可能。另外,session超時時間被設定成60分鐘,不會這麼快就超時的。

這次到csdn上搜了一下帖子,發現好多人在討論這個問題,然後我又google了一下,發現微軟**上也有類似的內容。

現在我就把原因和解決辦法寫出來。

由於asp.net程式是預設配置,所以web.config檔案中關於session的設定如下:

<

sessionstate

mode='inproc'

stateconnectionstring='tcpip=127.0.0.1:42424'

sqlconnectionstring='data source=127.0.0.1;trusted_connection=yes'

cookieless='true'

timeout='60'

/>

我們會發現sessionstate標籤中有個屬性mode,它可以有3種取值:inproc、stateserver?sqlserver(大小寫敏感) 。預設情況下是inproc,也就是將session儲存在程序內(iis5是aspnet_wp.exe,而iis6是w3wp.exe),這個程序不穩定,在某些事件發生時,程序會重起,所以造成了儲存在該程序內的session丟失。

哪些情況下該程序會重起呢?微軟的一篇文章

。在使用stateserver或者sqlserver儲存session時,所有需要儲存到session的物件除了基本資料型別(預設的資料型別,如int、string等)外,都必須序列化。只需將[serializable]標籤放到要序列化的類前就可以了。

如:[serializable]

public class myclass

具體的序列化相關的知識請參這裡

。至此,問題解決。

c 中Session丟失問題解決辦法

我們在用c 開發程式的時候經常會遇到session很不穩定,老是資料丟失。下面就是session資料丟失的解決辦法 1 在web.config檔案中修改session狀態儲存模式,如 2 啟動系統服務 asp.net狀態服務 系統預設是手動啟動的 3 如果session中儲存的資料型別是自定義的,如...

硬碟丟失問題的解決辦法

我用的是windows xp系統,剛才正在vmware的linux虛擬機器系統裡寫著程式呢。突然間,機器僵死,windows工作列的右下角提示硬碟 延緩失敗 趕緊重啟系統,花了好幾分鐘才進入系統,這時候發現第二塊硬碟掛載的 f 盤不見了。內網提交it故障,指望著it同事趕緊幫忙解決。幾分鐘過去了,人...

Oracle使用者的密碼丟失解決辦法

1.普通使用者的密碼丟失 如scott 解決方法 oracle裡面使用者的密碼是進行加密儲存的,所以只能重新修改生成新的密碼.利用系統管理員 sys 登入,將scott使用者的密碼修改即可 sql conn as sysdba 已連線。sql alter user scott identified ...