https://github.com/uliian/SessionExtentionStore
SessionExtention | 9 months ago | |
SessionExtentionStore | 9 months ago | |
packages | 9 months ago | |
.gitattributes | 9 months ago | |
.gitignore | 9 months ago | |
README.md | 9 months ago | |
SessionExtention.sln | 9 months ago | |
SessionExtention.sln.DotSettings | 9 months ago |
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)方法。
我的第一個可以使用的開源項目,我在我所負責的項目中已經開始使用,希望有能看到的朋友給予支持,提出寶貴意見。謝謝!