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/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器