標籤:
https://github.com/uliian/SessionExtentionStore
一個基於Redis的Session儲存擴充方案,解決ASP.NET中Session的局限性和跨應用程式使用的局限性
- 9 commits
- 1 branch
- 0 releases
- 1 contributor
- C# 99.3%
- ASP 0.7%
C#ASP branch: master SessionExtentionStore/
Merge branch ‘master‘ of https://github.com/uliian/SessionExtentionSt… …
latest commit f11b84d8f4 uliian authored on 5 Apr 2014
|
SessionExtention |
改名 |
9 months ago |
|
SessionExtentionStore |
改名 |
9 months ago |
|
packages |
Session擴充儲存 |
9 months ago |
|
.gitattributes |
初始化提交以添加預設 .gitIgnore 和 .gitAttribute 檔案。 |
9 months ago |
|
.gitignore |
初始化提交以添加預設 .gitIgnore 和 .gitAttribute 檔案。 |
9 months ago |
|
README.md |
Update README.md |
9 months ago |
|
SessionExtention.sln |
改名 |
9 months ago |
|
SessionExtention.sln.DotSettings |
Session擴充儲存 |
9 months ago |
README.mdSessionExtentionStore
一個基於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)方法。
我的第一個可以使用的開源項目,我在我所負責的項目中已經開始使用,希望有能看到的朋友給予支援,提出寶貴意見。謝謝!
C# redis 分布式session儲存