我想在ASP.NET应用程序中将我的会话超时设置为9小时.
这已经在web.config中设置了
<sessionState timeout="540"></sessionState>
但是,据了解,如果在托管网站的IIS中将超时设置为20分钟,则设置扩展会话状态将无济于事.
首先,我想确认这个假设是否正确.
问题是我无法访问我的共享托管Web服务器的IIS.
现在,经过一番研究,我想出了另一个代码项目的解决方案.这听起来像一个wonderful idea
.这个想法是将一个iframe插入主页面. iframe将包含不到20分钟的元刷新页面.
Response.AddHeader("Refresh","20");
这个想法对我来说似乎很好但这篇文章是7岁.另外在评论部分,用户抱怨,如果页面被最小化,这将不起作用,我担心在我的页面选项卡不活动时也会发生这种情况.
我想知道这些事情
>刷新方法是否适用于我的场景,即使页面最小化?
>有没有任何其他方法可以增加超时IIS超时设置的会话超时?
>另请参阅Stack Overflow中的一些问题,其中答案说明了IIS会话超时是针对clasic ASP页面的.那么为什么我的扩展超时不会触发?
解决方法
Firstly,I would like to confirm whether this assumption is right.
是的,这个假设是绝对正确的,以防您使用内存中会话状态模式.在这种情况下,会话存储在内存中,由于IIS可能会在不同的情况下(不活动的时间段,达到cpu /内存阈值,…)时掉落AppDomain,会话数据将丢失.您可以使用进程外会话状态模式. StateServer或sqlServer.在第一种情况下,会话存储在运行aspstate Windows服务的特殊专用机器的存储器中,在第二种情况下,它是专用的sql Server. sql Server是最强大的,但显然是最慢的.
1) Whether the refresh method will work for my scenario,even if the page is minimized?
隐藏的iframe仍然可以保持会话活动,但正如我之前所说,当IIS卸载应用程序时,可能会有一些条件(达到cpu /内存阈值=>您可以在IIS中配置).
2) Are there any other methods that could increase session time out that overrides IIS timeout setting?
以前的方法不会增加会话超时.它只是通过定期向服务器发送HTTP请求来维护会话,以防止IIS将AppDomain降低.
3) Also I read some questions in Stack Overflow where the answers state
that the IIS session timeout is for clasic ASP pages. Then why is not
my extended timeout not firing?
没有IIS会话超时这样的事情.会话是一个ASP.NET工件. IIS是一个不知道会话的Web服务器.
我个人不会在我的应用程序中使用会话.我只是禁用它们:
<sessionState mode="Off"></sessionState>
并使用标准的HTTP工件,如Cookie,查询字符串参数,…来维护状态.我更喜欢在后台保留信息,然后使用唯一的ids代替依赖于会话来检索它.