經常聽到程式設計師會說,明明設定了很長的超時時間,為什麼沒有生效呢?session很快就被清空了。
asp.net預設的sessionstate模式是inproc(程序內),資料是在**的應用程式池裡面儲存的。這樣在web.config設定的超時時間,是在應用程式池沒有發生**的基礎上才是有效的。
這樣就出現了問題,為什麼應用程式池會發生**?如何禁止應用程式池的**,讓session的資料可以儲存得時間長一點呢?
ftp
這和iis應用程式池的兩個設定有關:
【**】裡面的【固定時間間隔(分鐘)】和【程序模型】裡面的【閒置超時(分鐘)】,這兩項的預設設定大概是二十或三十分鐘的樣子。也就是說,在應用程式池的執行時間達到設定的間隔,應用程式池會發生**,session會被清空;在**空閒,即沒有請求的時間達到設定值,應用程式池會發生**,session會被清空。
這種**的行為在乙個正式運營的**上面,是很不合適的。我覺得iis的預設值是這樣也有點奇怪,因為預設值應該是乙個最通用,適合最多人的一種設定,這兩項的預設值顯然不是。可能windows畢竟是最流行的桌面系統,考慮到**可以節省資源,不影響其他的工作任務,才這樣設定的吧。伺服器一般都是單一的工作任務,不進行**帶來的價值,明顯是高於所消耗的資源的。
所以,如上面的截圖所示,我建議把這兩項都設定為0,禁用這兩種**行為。
Session物件的清空
在儲存某些多頁面共用的變數的時候 如儲存使用者登陸資訊 我們用得最多的就是session和cookies了,至於session怎麼使用這裡就不說了,主要說說session的清空。contents.remove 變數名 從session.contents集合中刪除指定的變數 contents.remo...
IIS配置共享Session會話
步驟1 在測試環境部署集群。步驟2 在集群機器的一台機器上開啟服務,找到aspnet state server服務,stateserver會話管理。確保服務開啟。步驟3 在步驟2這台機器上開啟登錄檔,hkey local machine system currentcontrolset servic...
asp中Session物件的清空
在儲存某些多頁面共用的變數的時候 如儲存使用者登陸資訊 我們用得最多的就是session和cookies了,至於session怎麼使用這裡就不說了 主要說說session的清空。contents.remove 變數名 從session.contents集合中刪除指定的變數 contents.remo...