Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 会话超时时重定向页面_Asp.net_Web Applications - Fatal编程技术网

Asp.net 会话超时时重定向页面

Asp.net 会话超时时重定向页面,asp.net,web-applications,Asp.net,Web Applications,当会话在回发期间过期时,我想将用户重新定向到主页。 当表单超时发生时,用户被引导到登录页面 会话超时=20,窗体超时=2880 我在Global.asax中尝试了以下代码,但不起作用并导致应用程序出错(“此上下文中没有响应”) 如果无法使用Server.Transfer或Respose.Redirect,则可以在每个页面的页面加载事件中检查某些会话变量。若该会话变量为null,则重定向到特定页面。您可以创建基页以避免代码重复 会话结束不是由浏览器启动的(因为浏览器的任何响应理论上都应该将会话再延

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

会话超时=20,窗体超时=2880

我在Global.asax中尝试了以下代码,但不起作用并导致应用程序出错(“此上下文中没有响应”)


如果无法使用
Server.Transfer
Respose.Redirect
,则可以在每个页面的页面加载事件中检查某些会话变量。若该会话变量为null,则重定向到特定页面。您可以创建基页以避免代码重复

会话结束不是由浏览器启动的(因为浏览器的任何响应理论上都应该将会话再延长20分钟),因此响应对象的概念没有意义

我能看到的唯一选项是使用
窗口.setTimeout
函数的某种客户端脚本(javascript)。。。类似于(未经测试的)


更新

再次阅读请求后,需求有点含糊不清。如果要求网页在20分钟后自动重定向(无需用户干预),那么我的答案就是这样的


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

它是web.config中的一个属性

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


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

@MajoB错误是“响应在此上下文中不可用”。@MagoB谢谢,但我收到了以下错误…“对象引用未设置为对象的实例”。取决于需要此功能的页面范围,您可以始终在Global.ascx中使用应用程序_BeginRequest。显然,要检查请求的页面,并确保它不是HomePage.aspx,否则您将陷入无限循环。我将尝试会话变量方法,看看它是如何工作的。谢谢,虽然这也是一个很好的答案,但我会将每个超时设置为相同,然后在(web.config)中设置表单loginUrl,返回登录页面。问题少了。谢谢。您的第二个声明在更新中是正确的。非常感谢。我将尝试MajoB的方法。我想在会话超时时刷新或直接到HomePage.aspx,并在表单超时时重定向到LoginPage.aspx。所以我不确定这是否能解决这个问题。我想若我设置会话超时=20,表单超时=20,那个么它就会重定向回登录。我只是不想让他们在会话变量被转储时重新登录。这样你可以处理的问题就少多了。我将每个问题设置为300,启动web应用程序,让它闲置。大约150分钟后,它超时并按预期显示登录页面。服务器或浏览器是否可能在我预期的300分钟超时之前超时?如果增加会话超时,则还必须从应用程序池中增加应用程序空闲超时。如果会话超时大于应用程序池的空闲超时,则会话将过期,因为应用程序在会话超时之前被回收。
<body onload="window.setTimeout(function(){document.location.href='/Home.aspx';},72000000);">
<forms name="WhateverYourAuthNameIs" 
       loginUrl="~/HomePage.aspx" 
       defaultUrl="~/Default.aspx" 
       protection="All" path="/" 
       cookieless="AutoDetect"/>