MVC3:如何在30分钟后停止会话到期?

时间:2011-06-27 10:19:36

标签: asp.net authentication session-state

我正在尝试更改会话过期所需的时间。我的观点是验证与<Authorize()>的会话,这很有效。

我正在创建会话,如下所示:

FormsAuthentication.SetAuthCookie(model.UserName, True)
Return RedirectToAction("Welcome", "Home")

我的密码已通过

验证
FormsAuthentication.Authenticate(username, password)

我的路线web.config位于system.web

<sessionState timeout="7200"></sessionState>

我的授权节点如下:

<authentication mode="Forms">
  <forms loginUrl="~/Home/Login" timeout="7200" cookieless="UseCookies" name=".LoginCookie" slidingExpiration="true" >
    <credentials passwordFormat="Clear">
      <user name="user" password="pass" />
    </credentials>
  </forms>
</authentication>

登录后,我甚至可以验证特定Cookie“LoginCookie”设置为在几天后过期,但如果我在30分钟内处于非活动状态,我的用户将被发送到登录页面。

最后,这似乎在Visual Studio中运行良好,因为它一直用于我已经完成的站点,但由于某种原因,在IIS中它没有(生产环境)。

对我可能错过的任何帮助都非常感激。

1 个答案:

答案 0 :(得分:3)

这可能是您的IIS apppool设置为回收的时候。然后,缓存变量将丢失,除非它们存储在SQL Server或State Server中。

检查IIS中AppPool中的设置。如果需要,您可以延长空闲超时。

另请阅读本文:http://support.microsoft.com/default.aspx?scid=kb;en-us;324772