增加会话时间

时间:2011-12-28 13:22:36

标签: asp.net session session-timeout

通过 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年历史。另外,在评论部分,如果页面最小化,用户会抱怨这不起作用,我担心当我的页面标签处于非活动状态时会发生同样的情况。

我想知道这些事情

  1. 即使页面已最小化,刷新方法是否适用于我的方案?
  2. 是否有任何其他方法可以增加会话超时,从而覆盖IIS超时设置?
  3. 我还阅读了Stack Overflow中的一些问题,其中的答案表明 IIS会话超时是针对clasic ASP页面。那为什么我的延长超时不会被解雇?

1 个答案:

答案 0 :(得分:7)

  

首先,我想确认这种假设是否正确。

是的,如果您使用内存中会话状态模式,这种假设是完全正确的。在这种情况下,会话存储在内存中,因为IIS可能会在不同情况下(不活动时段,达到CPU /内存阈值,......)拆除AppDomain,会话数据将丢失。您可以使用进程外会话状态模式。 StateServer或SQLServer。在第一种情况下,会话存储在运行aspstate Windows服务的特殊专用机器的内存中,在第二种情况下,它是专用的SQL Server。 SQL Server是最强大的,但显然是最慢的。

  

1)即使页面被最小化,刷新方法是否适用于我的场景?

隐藏的iframe仍然可以使会话保持活动状态但是正如我之前所说的那样,当IIS卸载应用程序时可能存在一些条件(达到CPU /内存阈值=&gt;你也可以在IIS中配置它)。 / p>

  

2)是否有任何其他方法可以增加会话超时,从而覆盖IIS超时设置?

之前的方法不会增加会话超时。它通过定期向服务器发送HTTP请求来简单地维护会话,以防止IIS将AppDomain关闭。

  

3)我还在Stack Overflow中阅读了一些问题,答案说明了这些问题   IIS会话超时是针对clasic ASP页面。那为什么不呢   我的延长超时没有解雇?

没有IIS会话超时这样的事情。该会话是一个ASP.NET工件。 IIS是一个对会话一无所知的Web服务器。

我个人不会在我的应用程序中使用会话。我只是禁用它们:

<sessionState mode="Off"></sessionState>

并使用标准的HTTP工件,如cookie,查询字符串参数,......来维护状态。我更喜欢在我的后端保留信息,然后使用唯一ID而不是依赖会话来检索它。