会话超时后重定向到登录页面

gab*_*ira 5 .net vb.net asp.net visual-studio-2010 session-timeout

我发现了一些类似的问题,但没有人给我我真正需要的东西.

这是事情,我已将此添加到我web.config处理用户会话到期:

<sessionState mode="InProc" timeout="1" />
Run Code Online (Sandbox Code Playgroud)

1分钟后,会引发Session_End事件Global.asax:

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
    Response.Redirect("Login.aspx")
End Sub
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为:

Response is not available in this context.
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,这个问题得到了一个很好的说明,这是好的,它得到了回报).

我不想要任何幻想.我只想要一种简单的方法,在会话时间到期时将用户重定向到登录页面.就这样.

谢谢.

Sha*_*hen 3

Session_End是一个服务器端事件,意味着它在Web服务器上触发,与客户端请求无关。这就是请求不可用的原因。

在这件事上你有两个选择:

  1. 在每个客户端请求上,检查是否设置了特定的会话变量。如果不是,则意味着先前的 Session 已过期,必须填充新的 Session。(我假设这就是您想要检查会话过期的原因)

  2. 在客户端上进行 javascript 调用,定期返回服务器以检查会话是否仍然有效。如果会话已过期,您可以将用户重定向到登录页面。

不同重定向方法的示例

location.href = "login.aspx";
// or you can use 
location.assign("login.aspx");
//for redirecting without storing in history
location.replace("login.aspx")
Run Code Online (Sandbox Code Playgroud)

不要忘记添加?ReturnUrl=[current url]到登录重定向路径。

华泰

  • 当您使用 javascript 或以任何方式从客户端调用服务器时,它将始终更新会话。所以上述方法永远不会奏效。 (4认同)