1
我正在用無模式數據庫實現自己的SessionStateStoreProvider。從documentation有點難以分辨,但似乎我必須有一個清理過期會話的獨立流程,因爲數據庫無法通知會話狀態存儲庫會話已過期。使用自定義SessionStateStoreProvider清理過期會話
我錯了嗎?我還沒有看到重寫SetItemExpireCallback方法的替代示例。
我正在用無模式數據庫實現自己的SessionStateStoreProvider。從documentation有點難以分辨,但似乎我必須有一個清理過期會話的獨立流程,因爲數據庫無法通知會話狀態存儲庫會話已過期。使用自定義SessionStateStoreProvider清理過期會話
我錯了嗎?我還沒有看到重寫SetItemExpireCallback方法的替代示例。
是的我相信這是正確的。
如果您存儲在數據庫中的會話,再有就是對SQL Server代理作業多數民衆贊成在調用這個過程每分鐘左右:
DECLARE @now datetime
SET @now = GETUTCDATE()
DELETE ASPStateTempSessions WHERE Expires < @now
沒有觸發會話過期。讓我們說這是一個觸發器,哪裏可以?沒有地方可以僅僅通過觸發器來理解會話過期並自動刪除自己。
另一方面你可以做的不是創建一個計時器,而是當用戶請求一個頁面時,每隔1-2分鐘觸發一個函數來刪除已過期的頁面。
因此,您從用戶調用中創建觸發器,但必須使其每隔1-2分鐘使用某種鎖定運行,並檢查最後一次運行。
希望這有助於。