[ASP.NET][Session] 使用 SQLServer 会话管理解决 Session 丢失问题
使用 SQLServer 会话管理解决 Session 丢失问题
步骤
1.通过命令行执行 aspnet_regsql.exe 程序(不要双击安装),先在 CMD 中输入命令
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
再执行
语法:aspnet_regsql.exe -S 服务器ip -U 数据库登录名 -P 数据库密码 -d 所要放入的数据库 -ssadd -sstype c
如:aspnet_regsql.exe -S localhost -U sa -P 123456 -d ZSZ -ssadd -sstype c
执行成功的结果为:
2.检查数据库
自动增加了两张表。
3.在 Web.Config 中加入代码
<sessionState sqlConnectionString="server=.;database=ZSZ;uid=sa;pwd=123456" allowCustomSqlDatabase="true" mode="SQLServer" timeout="1000"></sessionState>
测试
新建一个 HomeController 进行测试,分别是从 Show() 和 Write(),一个是从 Session 中显示内容,另一个是在 Session 中插入内容。
public ActionResult Show() { if (Session["name"] != null) { return Content(Session["name"].ToString()); } return Content("null"); } public ActionResult Write() { if (Session["name"] == null) { Session["name"] = "wen"; } return Content("OK"); }
执行 http://localhost:5451/home/write 方法后
观察数据库表变动
现在重新启动调试程序,打开 http://localhost:5451/home/show,会发现不需要重新对 Session 进行赋值。
【注意】调试时不要关闭浏览器。
注意事项
1.不要直接双击使用 aspnet_regsql.exe 进行创建,要直接使用步骤中的命令去生成,否则无效。
如果通过可视化界面去操作,生成的结果是(见下图),和命令行生成的结果不一致。
2.在进行校验 session 状态是否成功时,请不要关闭浏览器,重新启动调试即可。因为服务器中的 SessionId 和浏览器的中 Cookie 是进行关联的,一旦我们关闭了浏览器,默认的情况下可能会清空 Cookie 中的信息,当再次打开后,会重新和服务端建立连接并重新分配 SessionId,也就是说之前保存入库的 SessionId 已经失效,需要重新对 Session 赋值才行。
【推荐】国内首个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 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?