InProc会话超时无效

时间:2015-10-22 12:07:29

标签: asp.net asp.net-mvc asp.net-mvc-4

我正在使用asp .NET MVC应用程序,我已经配置了

<system.web><sessionState mode="InProc" timeout="90" /></system.web>

但看起来会话仍然只有20分钟而不是90分钟,为什么?

我怎样才能使这个有效而不是20(默认我认为)

我已经检查了应用程序池中的空闲时间,它是20,是什么原因导致的?如果是,我如何从配置文件中覆盖它?

2 个答案:

答案 0 :(得分:2)

您发布的配置似乎是正确的。

尝试检查您的IIS配置。来自this TechNet链接:

  1. 打开IIS管理器并导航到您要管理的级别。
  2. 在“功能视图”中,双击“ASP。”。
  3. 在ASP页面的“服务”下,展开“会话属性”。
  4. 在超时字段中,输入格式为hh:mm:ss的超时值。例如,输入00:15:00 15分钟。
  5. 在“操作”窗格中,单击“应用”。
  6. 如果您正在使用表单身份验证,请记住它使用自己的超时,可以按如下方式设置:

    <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分钟)回收,因此用户丢失了会话,因此无法正常工作。

如果用户在应用程序上是可能的,则空闲时间必须大于会话时间。