【问题标题】:ASP.NET Page Life Cycle IssuesASP.NET 页面生命周期问题
【发布时间】:2011-07-03 23:14:28
【问题描述】:

显然我不熟悉 ASP.NET 中页面的生命周期。当我想在离开页面后处理 Session 变量时,这一点变得很明显。我做了最有意义的事:

    protected void Page_Unload(object sender, EventArgs e)
    {
        Session.Remove("ServiceSearch");
    }

我不知道当我从 AND 转到页面时会调用它。我想要做的是在用户离开页面时处理该 Session 变量。我该怎么做?

【问题讨论】:

    标签: asp.net session-variables page-lifecycle


    【解决方案1】:

    Page_Unload 是指在解析和创建页面后,在释放之前将Page 对象卸载。它与离开页面无关。就像@Nick 说的那样,除了控制每条退出路径之外,真的没有什么好方法可以说明这一点。而你不能,因为你无法控制用户何时回击,或访问 google.com,然后将他们刚才所在的 url 粘贴到浏览器中,等等。

    如果您想删除 Session 变量,以免无意中重复使用它,更好的解决方案是每次进入页面时覆盖 Session 变量,然后将其丢弃会话到期时的会话。

    【讨论】:

      【解决方案2】:

      会话数据对于存储超出页面生命周期的数据很有用。如果您不想在页面生命周期之后存储它,那么 Session 数据不适合您。

      【讨论】:

        【解决方案3】:

        如果用户通过链接离开页面,您可能会创建一个链接按钮,该按钮连接到同一页面上的方法。该方法将删除会话并进行重定向。

        我希望有更好的解决方案。尽管据我了解,在您的情况下没有要使用的页面事件,因为页面必须重新加载才能执行删除会话代码。当用户通过某个链接离开时,页面不会重新加载。

        您也许可以通过 javascript 来处理它。我一直在想离开的情况下,我得到了一个关于一些 bs 的弹出框。您可能可以使用相同的技术来触发 AJAX 以删除会话。

        【讨论】:

          【解决方案4】:

          我在 php 登录时遇到了类似的情况——登录用户可以使用箭头来回登录页面。所以,我只是添加:

          session_start();
          session_unset();
          session_destroy();
          

          在登录页面的 html 脚本上方,这样如果登录的用户返回箭头,则会话既未设置又被破坏。任何向前箭头的尝试只会导致登录页面——请求用户登录凭据——本质上,只要他们向后箭头,用户就会被注销! 希望这会有所帮助!

          阿尔弗雷德

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-01-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多