ASP.NET页面生命周期问题

问题描述:

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

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

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

Page_Unload指的是在解析并创建页面之后将其丢弃之前对象Page的卸载。它与离开页面无关。就像@尼克说的那样,除了控制每个退出路径之外,没有什么好的方法可以说明这一点。你不能,因为你无法控制用户什么时候回来,或去google.com,然后粘贴到他们刚刚浏览器的网址等。

如果你想删除Session变量只是因为它不会无意中被重新使用,更好的解决方案是每次进入页面时覆盖Session变量,并且让它在会话过期时随会话一起处理。

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

我希望有一个更好的解决方案。虽然,从我的理解,没有页面事件在您的情况下使用,因为该页面将不得不重新加载执行删除会话代码。当用户通过某个链接离开时,页面不会被重新加载。

您可能可以通过javascript处理它。我一直处于我想离开的地方,并且有一些关于一些bs的弹出框。您可能可以使用相同的技术来触发AJAX以删除会话。

会话数据对于存储超出页面生命周期的数据非常有用。如果您不希望将其存储在页面的生命周期之外,那么会话数据不适合您。

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

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

登录页面的HTML脚本的上方,如果登录用户箭头后面,会议既没有设置并销毁。任何向前箭头的尝试只会导致登录页面 - 请求用户登录凭据 - 实质上,用户在箭头回退时退出! 希望这有助于!

Alfred