你如何處理這個問題,你必須在會話狀態的用戶數據(HttpContext的),有人同步的改變對他們的角色在DB,現在你的會話其持有的角色的名單已經出來了與DB中的更改同步?你不想每次都打數據庫來檢查角色。角色了與用戶會話
這是如何處理的?
你如何處理這個問題,你必須在會話狀態的用戶數據(HttpContext的),有人同步的改變對他們的角色在DB,現在你的會話其持有的角色的名單已經出來了與DB中的更改同步?你不想每次都打數據庫來檢查角色。角色了與用戶會話
這是如何處理的?
使用的SqlCacheDependency監視與表角色。當表更改時,緩存失效。然後,您查詢您的緩存中的角色,而不是數據庫。
http://msdn.microsoft.com/en-us/library/system.web.caching.sqlcachedependency.aspx
可以將它們緩存在memcache中 – PositiveGuy 2012-02-09 19:30:57
您可以在理論上 - 但我不知道是否有一個緩存依賴提供程序與memcache無效基於其他依賴項的更改項目,因此sql緩存依賴項(假設您正在說memcached,而不是任何'在內存緩存中'IE甚至內置了Http Cache) – 2012-02-09 20:38:26
假設的變化已經在同一程序中提出,可以在靜態屬性(也許一本字典)中設置了各種各樣的信號。然後,在begin request事件的httpmodule中,根據屬性值檢查屬性並刷新會話數據。
務必使用的財產鎖/監控,以保持多個線程同時訪問它。
但我不希望被檢查DB在每次請求命中......這會殺我們的服務器我可能想要每x秒或幾分鐘進行一次輪詢?我不確定這就是我所問的。 – PositiveGuy 2012-02-09 16:48:10
你不需要。正如Darthg8r所建議的,只有在數據實際發生變化時才刷新數據。 – Pbirkoff 2012-02-09 17:02:00
更改用戶的會話變量必須由用戶啓動。我不知道如何做到這一點,以便當用戶當前登錄並且管理員更改他們的角色,更新其現有會話(用戶不需要加載新頁面或開始新請求)。對於角色/和身份驗證項目,出於安全原因,每次加載新頁面時可能都希望執行檢查。這樣,如果您阻止訪問,效果是立竿見影的,並且在關閉訪問權限後他們不會保持會話活動。
小支票上做一行數據一個基本的選擇,除非你得到成千上萬的請求的動力不足服務器不應該殺了你的服務器/ s的
我看到我同樣的,實際上需要relogon查看新的角色...... – Aristos 2012-02-09 16:45:43