• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[ASP.NET][Session] 使用 SQLServer 会话管理解决 Session 丢失问题

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

步骤

  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 赋值才行。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NET邮件外发发布时间:2022-07-10
下一篇:
用ASP.NET对IIS中的虚拟目录进行操作发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap