2010-06-07 137 views
0

我写了一个带有iFrame的页面,该页面基本上是通过我们的服务器上的一系列内部页面循环显示我们公司的日常活动。我认为这个问题是偶尔会丢失会话并重新导向登录屏幕以继续失去会话,这是我们网站上任何人尝试访问网页而不登录的默认行为。ASP.NET中的会话超时

我已设置会话超时时间为4小时,iframe每循环6页,每次10秒到5分钟,我甚至在页面上设置了META刷新,每3小时刷新一次。我不明白还有什么可以阻止这个网页继续活跃。

+0

是否有可能使用AJAX而非Iframe?我怀疑这会比使用Iframe更好的设计解决方案? – Darknight 2010-06-07 14:50:07

+0

我开始使用AJAX,但后来发现有些用户仍然使用IE6并且没有启用ActiveX。最终,它很可能会在某个时候转换回来。 – BornReady 2010-06-08 01:42:39

+0

由于这是针对内部网站的,因此它已被优先推回,但一旦我能够测试,我一定会回来,回复并检查最佳解决方案。 – BornReady 2010-06-18 12:03:44

回答

2

也许这可以帮助你:keep-session-alive

+0

这将工作。我在工作中使用这个。 – rebelliard 2011-03-30 06:39:24

+0

呃哦。链接腐烂。 – Urbycoz 2013-10-18 09:31:28

+0

@Urbycoz:谢谢。我必须承认,我不确定它是哪个环节。也许这是它最初显示的内容:[Defibrillator:保持ASP.NET Session Active Ad Infinitum](http://www.codeproject.com/Articles/10550/The-Defibrillator-Keeping-ASP-NET-Session-Alive-Ad )(希望这会延长寿命) – 2013-10-18 09:35:33

0

检查身份验证cookie超时。

<authentication mode="Forms"> 
<forms name="ApplicationLogin" loginUrl="Login.aspx" path="/" protection="All" timeout="240"> 
</forms> 
0

也许您的应用程序池超时。

IIS优先,但他们处理稍有不同的方案。

对于IIS,应用程序池的默认20分钟超时是指传入请求。如果应用程序在20分钟内没有收到任何请求,则应用程序池将进入休眠状态以节省资源。发生这种情况时,应用程序中的所有会话都消失了。

ASP.NET会话超时处理每会话请求。您的网站可能非常繁忙,但如果一个用户(即会话)在20分钟内未处于活动状态,则只会丢弃该会话。

所以是的,要确保会话保持活动60分钟,您必须更改IIS应用程序池以及web.config的超时设置。

ASP.NET 2.0 Session Timeout