【问题标题】:Session Timeout manually手动会话超时
【发布时间】:2012-05-05 11:12:27
【问题描述】:

我在 asp.net 中的虚拟站点上有 2 个页面(default.aspx 和 default2.aspx),在 default.aspx 上,我创建了如下所示的会话

   protected void Page_Load(object sender, EventArgs e)
    {
        Session["MySession"] = "WELCOME";
        Session.Timeout = 1;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("default2.aspx");
    }

在 default2.aspx 上

 if (Session["MySession"] != null)
            Response.Write(Session["MySession"]);
        else
            Response.Write("Session Timed Out");

我想知道 1 分钟后会话将被擦除,因为我有超时,但一分钟后,当我单击按钮时,它会将我重定向到 default2.aspx,并显示会话值“WELCOME”。谁能告诉我如何在特定持续时间后擦除会话值

【问题讨论】:

    标签: asp.net session timeout


    【解决方案1】:

    在您的Default.aspx 中,您必须检查它是否不是回发,否则每次单击按钮都会再次初始化会话

     protected void Page_Load(object sender, EventArgs e)
      {
         if(!Page.isPostBack())
            {
              Session["MySession"] = "WELCOME";
              Session.Timeout = 1;
            }
      }
    
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("default2.aspx");
    }
    

    【讨论】:

    • 感谢您的回复,实际上,我正在做的是,我打开 default.aspx 页面,并保持打开状态 1 分钟,然后单击按钮,使其重定向到default2.aspx,如果我使用上述技术,我的会话将永远无法设置,因为在回发之后,将加载 default2.aspx 而不是 default.aspx
    • 只有在 Default.aspx 第一次加载时才应该设置我已经用你需要的所有代码编辑了我的答案
    • 嗯,它似乎工作,你能告诉我你的代码和我的代码有什么区别吗?你设置了 Not IsPostback 条件,我设置它应该在页面加载时直接运行该代码,那又如何有所作为
    • IsPostBack 中包裹的代码只会在第一页加载时执行。您可以添加几个断点并对其进行调试以更好地了解发生了什么
    • 我明白其中的区别,如果我不放置 Not Postback 条件,它会再次进入 page_load 并在我单击按钮后执行代码并再次重置会话值和超时值,无论如何,感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2012-08-15
    • 2018-01-28
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    相关资源
    最近更新 更多