会话超时到期时重定向页面

时间:2012-06-13 14:49:54

标签: asp.net web-applications

我想在回发期间会话过期时将用户重定向到主页。 当表单超时发生时,用户将被定向到登录页面。

会话超时= 20,表格超时= 2880

我在Global.asax中尝试了以下代码,但是不起作用并导致Application_Error(“响应在此上下文中不可用。”)。

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
    ' Fires when the session ends
    Response.Redirect("~/HomePage.aspx")
End Sub

3 个答案:

答案 0 :(得分:2)

Session_End不是由浏览器发起的(因为浏览器的任何响应理论上应该将会话延长20分钟),因此Response对象的概念没有意义。

我能看到的唯一选择是使用某种使用window.setTimeout功能的客户端脚本(javascript)......类似于(未经测试)......

<body onload="window.setTimeout(function(){document.location.href='/Home.aspx';},72000000);">

<强>更新

再次阅读该请求后,该要求略显模糊。如果要求网页在20分钟后自动重定向(无需用户干预),那么我的答案就是解决这个问题。

但是,如果用户在20分钟后向服务器发送另一个请求,我认为更有可能要求重定向到主页。在这种情况下,MajoB的回答很好。

答案 1 :(得分:1)

这是你web.config中的一个属性

<forms name="WhateverYourAuthNameIs" 
       loginUrl="~/HomePage.aspx" 
       defaultUrl="~/Default.aspx" 
       protection="All" path="/" 
       cookieless="AutoDetect"/>

当到期时,它们将被发送到loginUrl设置为的页面。

答案 2 :(得分:0)

如果您无法使用Server.TransferRespose.Redirect,那么您可以在每个页面的page_load事件中检查一些会话变量。如果此会话变量为null,则重定向到特定页面。您可以创建基页以避免代码重复。