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


    使用 SQLServer 会话管理解决 Session 丢失问题

    步骤

      1.通过命令行执行 aspnet_regsql.exe 程序(不要双击安装),先在 CMD 中输入命令

    cd C:WindowsMicrosoft.NETFrameworkv4.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 赋值才行。

  • 相关阅读:
    GateWay配置使用
    Hystrix&Dashboard配置使用
    Ribbon&OpenFeign配置使用
    服务端&客户端注册进Eureka
    Eureka单机&集群配置
    通过淘宝IP库获取定位
    php 红包瓜分算法(实用)
    换博客力!
    2021 上学期做题记录
    计数 DP 学习笔记
  • 原文地址:https://www.cnblogs.com/liqingwen/p/7485807.html
Copyright © 2020-2023  润新知