ASP.NET:EntityFramework實現Session


ASP.NET默認的InProc模式的Session既浪費內存又在網站重啟時存在數據丟失問題,SQLServer模式的Session只支持SQL Server又需要命令行配置。使用EntityFramwork實現Custom既可以利用EntityFramework實現自定義的SessionProvider既可以避免數據丟失又不用捆綁到Sql Server上,還可以采用CodeFirst的自動生成數據庫的方式,讓我們不再需要命令行配置。

我們可以按照實際情況,對低配置單個網站采用嵌入式數據庫,對負載均衡的Session統一使用分布式的Session服務器避免狀態丟失,更可以在后期不用修改原有代碼,只通過修改web.config方便的添加和切換其他提供了EntityFramework的數據庫。

1.定義實體:

實體的代碼我通過EntityFramework的插件從數據庫反向生成了ASP.NET Session的實體代碼,參考github上其他的Session提供程序進行了修改,將2個表合並,依然支持不同Application級別的Session存取。

 

2.自定義提供程序:

主要的參考三個來源:

(1)MongoDB-ASP.NET-Session-State-Store(https://github.com/AdaTheDev/MongoDB-ASP.NET-Session-State-Store

(2)SQLiteSessionStateStore(https://github.com/micahlmartin/SQLiteSessionStateStore

(3)System.Web.SessionState.SqlSessionStateStore(ILSpy)

 

3.配置web.config

通過切換Provider的connectionStringName屬性可以切換不同的數據連接。

 

4.測試功能:

只是簡單的測試了讀寫。

 

5.查看結果:


代碼已經上傳到gitosc:http://git.oschina.net/myshare/EntityFramework.SessionStateStoreProvider

組件已經上傳到nuget:https://www.nuget.org/packages/EfSessionStateProvider/

 


免責聲明!

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



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