我想在回发期间会话过期时将用户重定向到主页。 当表单超时发生时,用户将被定向到登录页面。
会话超时= 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
答案 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.Transfer
或Respose.Redirect
,那么您可以在每个页面的page_load事件中检查一些会话变量。如果此会话变量为null,则重定向到特定页面。您可以创建基页以避免代码重复。