C# redis 分布式session存儲


https://github.com/uliian/SessionExtentionStore

一個基於Redis的Session存儲擴展方案,解決ASP.NET中Session的局限性和跨應用程序使用的局限性
 branch: master 

 README.md

SessionExtentionStore

一個基於Redis的Session存儲擴展方案,解決ASP.NET中Session的局限性和跨應用程序使用的局限性

原生的Session解決方案存在着跨應用程序的困難,擴展性的困難,而SessionExtentionStore方案致力於解決這個問題。 這是一個簡單的處理方案,使用了這個解決方案,您能將多個應用間數據交互交由SessionExtentionStore解決, 在使用共享Session提供SSO的解決方案中,尤其有用。

我采用的是類Session的處理方式,和SessionId綁定到了一起,這樣就能依賴於Session的機制將用戶和擴展綁定到了一起。

使用方法: 配置web.config,增加以下配置節點:

 <system.web>
    <httpModules> <add name="SessionExtentionStore" type="SessionExtentionStore.UpdateTTL"/> </httpModules> <system.web> <appSettings> <add key="SessionExtention" value="127.0.0.1"/> </appSettings>

要是MVC環境,則建立一個Controller父類,派生自Controller類,若是WebForm則建立一個父類派生自System.Web.UI.Page, 父類加入以下屬性定義:

        private StoreContainer _store;
        public StoreContainer Store { get { if (!string.IsNullOrEmpty(Session.SessionID)) { Session["__TempCreate__"] = 1; return new StoreContainer(Session.SessionID); } return _store ?? (_store = new StoreContainer(Session.SessionID)); } }

其他所有頁面都派生自這兩個父類,然后均可以使用Store屬性進行數據存儲,與使用Session的方式一樣。 因為存儲內容當中帶有類型信息,若帶有非mscorlib帶有的的數據類型需要在多應用程序間共享,需要在子類中使用 Store.GetJson(string key)或者GetValue(string key)方法。

我的第一個可以使用的開源項目,我在我所負責的項目中已經開始使用,希望有能看到的朋友給予支持,提出寶貴意見。謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM