通过IIS 7.0托管的站点
我想在我的ASP.NET应用程序中将我的会话超时设置为9小时。
这是在web.config设置的
<sessionState timeout="540"></sessionState>但是,正如我所理解的,如果在网站所在的IIS中将超时设置为20分钟,设置扩展会话状态将是没有用的。
首先,我想证实这个假设是否正确。
问题是,我无法访问共享宿主web服务器的IIS。
现在,经过一些研究,我在代码项目中找到了另一个解决方案。这听起来像wonderful idea。其想法是向母版页插入一个iframe。iframe将包含另一个页面,其元刷新时间将小于20分钟。
Response.AddHeader("Refresh", "20");这个主意对我来说似乎不错。但这篇文章已经7年了。此外,在评论部分,用户抱怨如果页面最小化,这将无法工作,我担心当我的pages选项卡不活动时,也会发生同样的情况。
我想知道这些事情
发布于 2011-12-28 13:34:19
首先,我想确认这个假设是否正确。
是的,如果您使用内存中会话状态模式,这个假设是绝对正确的.在这种情况下,会话被存储在内存中,而且由于IIS可以在不同的情况下删除AppDomain (不活动期间,达到CPU/内存重存,.)会话数据将丢失。您可以使用进程外会话状态模式。无论是StateServer还是SQLServer。在第一种情况下,会话存储在运行aspstate Windows服务的专用机器的内存中,在第二种情况下,会话是专用的Server。Server是最健壮的,但显然是最慢的。
1)刷新方法是否适用于我的场景,即使页面被最小化了?
隐藏的iframe仍然可以保持会话的活动,但正如我前面说过的,在IIS卸载应用程序时可能存在一些条件(到达=> /内存重存时,您也可以在IIS中配置它)。
2)是否有其他方法可以增加会话超时,从而覆盖IIS设置?
前一种方法不会增加会话超时。它只是通过定期向服务器发送HTTP请求来维护会话,以防止AppDomain中断。
3)我还读到了堆栈溢出中的一些问题,在这些问题中,答案表明IIS超时是用于clasic ASP页面的。那为什么我的延长超时时间没有触发呢?
不存在IIS会话超时的情况。会话是一个ASP.NET工件。IIS是一个不了解会话的web服务器。
就我个人而言,我在我的应用程序中不使用会话。我只是简单地禁用它们:
<sessionState mode="Off"></sessionState>并使用标准HTTP构件,如cookie、查询字符串参数、.保持状态。我更喜欢将信息持久化到后端,然后使用唯一的it来检索信息,而不是依赖会话。
https://stackoverflow.com/questions/8656463
复制相似问题