3

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

会话超时 = 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
4

3 回答 3

2

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

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

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

更新

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

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

于 2012-06-13T15:01:05.053 回答
1

它是您的 web.config 中的一个属性

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

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

于 2012-06-13T15:29:06.800 回答
0

如果你不能使用 Server.Transfer,或者Respose.Redirect你可以在每个页面的 page_load 事件中检查一些会话变量。如果此会话变量为空,则重定向到特定页面。您可以创建基本页面以避免代码重复。

于 2012-06-13T15:00:54.080 回答