• HttpContext.Current.Session.SessionID相关问题及备忘


    今天Tony提到说我们系统中会利用如下代码来判断用户是否过期。

    if (string.IsNullOrEmpty(UserContext.ConnectionSessionId))
    {
           LogUIFactory.Current.Debug(HEARTBEAT_DISCONNECTION_LOG_2);
           timeout = true;
    }
    

    但是我做实验发现,在page load的时候,打印出来的sessionid是一直在变化的:

     protected void Page_Load(object sender, EventArgs e)
    {
         Response.Write(HttpContext.Current.Session.SessionID);
    }
    

    上面这代码很好解释,因为http连接是无状态的,所以每次请求过来,sessionid会变化,不足为怪。

    但是如果稍微加点料,就不一样了:

    protected void Page_Load(object sender, EventArgs e)
    {
        Session["tst"] = "222";
        Response.Write(HttpContext.Current.Session.SessionID);
    }
    

    上面打印出来的sessionid是一直不会再变化的。

    看来如果赋值了之后,session实例会被创建,然后其id就被固定下来了。

     session这东西几年前在用,最近几年写程序,一直在用cookie,都差点忘记了session这点了。今天看到老系统用的仍然是这个,并且发现了其中的这点,感觉收获还挺大的,至少可以再解决框架中的一个技术难点。

  • 相关阅读:
    学习笔记9(必做)
    团队作业(四):描述设计
    改进ls的实现(课下作业)
    stat命令的实现-mysate(必做)
    反汇编测试
    学习笔记8(必做)
    初次使用git上传代码到码云
    团队作业(三):确定分工
    学习笔记7(必做)
    缓冲区溢出漏洞实验
  • 原文地址:https://www.cnblogs.com/scy251147/p/5156606.html
Copyright © 2020-2023  润新知