由於各種原因,我厭倦了ASP.NET會話狀態,我試圖自己做(單獨的問題即將到來,爲什麼我感到厭倦,是否可行,自己做,但現在讓我們假定它是)。拋開安全問題,跟蹤會話似乎只涉及使用guid存儲cookie,並將該guid與數據庫中的小型「會話」表相關聯,該數據庫在guid上鍵入幷包含少量的字段來跟蹤超時並鏈接到用戶表中的主鍵,用於那些鏈接到註冊用戶的會話。ASP.NET(或任何Web框架)如何實現持久會話狀態?
但是我堅持使用cookie的細節,在用戶的瀏覽器沒有設置爲接受cookie的情況下。在我看來,每次用戶訪問啓用會話狀態的任何頁面時,ASP.NET都必須確定瀏覽器是否支持cookie。如果已經有與請求一起發送的會話cookie,顯然它知道cookie被接受。
如果不是,它似乎需要檢查,據我瞭解,它涉及嘗試寫入cookie並重定向到試圖讀取cookie的頁面。如此看來,當用餅乾用戶關閉訪問一個網站的幾個頁面,那ASP.NET
(一)必須爲每一頁做往返測試的用戶訪問,或
( b)必須假設瀏覽器接受cookie並在每個頁面上爲用戶創建一個帶有(臨時)會話ID的記錄 - 並且如果會話狀態應該是持久性的,那麼似乎必須將該初始會話ID寫入數據庫在每個頁面上。
但是(a)聽起來很瘋狂,而且(b)聽起來也很瘋狂,因爲我們會爲所有這些單頁會話快速累積會話ID。所以我認爲必須有一些其他的技巧/啓發式,用於知道何時進行往返測試和/或何時爲會話創建記錄。
我錯了嗎困惑?我想說的是,在ASP.NET的可插入會話狀態系統中實現一個自定義的存儲解決方案,我說的是完全跳過ASP.NET的會話狀態系統,我的問題是一個更詳細的版本這個之一:Implementing own Session Management in ASP.NET。)
閱讀了幾次之後,我想我知道你在試着說些什麼。 (a)連同(b)的確聽起來很瘋狂。希望有人能啓發我們。 – 2010-01-07 08:09:36