我正在使用asp .NET MVC应用程序,我已经配置了
<system.web><sessionState mode="InProc" timeout="90" /></system.web>
但看起来会话仍然只有20分钟而不是90分钟,为什么?
我怎样才能使这个有效而不是20(默认我认为)
我已经检查了应用程序池中的空闲时间,它是20,是什么原因导致的?如果是,我如何从配置文件中覆盖它?
答案 0 :(得分:2)
您发布的配置似乎是正确的。
尝试检查您的IIS配置。来自this TechNet链接:
如果您正在使用表单身份验证,请记住它使用自己的超时,可以按如下方式设置:
<system.web>
<authentication mode="Forms">
<forms timeout="90"/>
</authentication>
<sessionState mode="InProc" timeout="90" />
</system.web>
答案 1 :(得分:2)
因为IIS在没有活动的情况下每隔x分钟重启池(包括会话),在池本身的设置中由空闲超时配置,如果用户在应用程序中设置了90分钟的会话,如果没有活动,IIS可以在此90分钟结束前重新启动池。例如:
会话在app.config中配置为60分钟 闲置30分钟后,游泳池自行循环使用 只有一个人使用该应用
1.00pm:用户连接,他在10分钟内导航,然后在页面上什么都不做(对于instacne填写一个非常大的表单而不提交,没有ajax调用。此时,用户有会话&#34;打开&# 34;直到凌晨1.00分+ 10分钟+ 60分钟配置=早上2.10 凌晨1点50分,他试图按下提交按钮,但由于应用程序池在1.40(闲置时间为1.10 + 30分钟)回收,因此用户丢失了会话,因此无法正常工作。
如果用户在应用程序上是可能的,则空闲时间必须大于会话时间。