增加会话时间

nav*_*een 13 asp.net session session-timeout

通过IIS 7.0托管的站点

我想在我的ASP.NET应用程序中将会话超时设置为9小时.
这已在web.config中设置

<sessionState timeout="540"></sessionState>
Run Code Online (Sandbox Code Playgroud)

但是,据我所知,如果在托管网站的IIS内部将超时设置为20分钟,则设置扩展会话状态将毫无用处.

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

问题是我无法访问共享托管Web服务器的IIS.

现在,经过一些研究,我想出了代码项目中的另一个解决方案.这听起来像一个wonderful idea.我们的想法是将iframe插入母版页.iframe将包含另一个元刷新少于20分钟的页面.

 Response.AddHeader("Refresh", "20");
Run Code Online (Sandbox Code Playgroud)

这个想法对我来说似乎很好.但这篇文章已有7年历史.另外,在评论部分,如果页面被最小化,用户会抱怨这不起作用,并且我担心当我的页面选项卡不活动时会发生同样的情况.

我想知道这些事情

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

Dar*_*rov 7

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

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

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

隐藏的iframe仍然可以保持会话活动,但正如我之前所说的,当IIS卸载应用程序时可能存在一些条件(达到CPU /内存阈值=>您也可以在IIS中配置它).

2)是否有任何其他方法可以增加超出IIS超时设置的会话超时?

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

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

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

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

<sessionState mode="Off"></sessionState>
Run Code Online (Sandbox Code Playgroud)

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

  • @naveen,我使用cookies,当我需要传递复杂对象时,我选择POSTing,查询字符串参数或将对象持久化到我的后端,然后在给定id的情况下将其取回.有很多可能性.一切都取决于我的具体情况以及我想要做的事情.这个问题没有一个单一的答案. (2认同)