Asp.net mvc iis7网站ASP.NET MVC4配置会话已过期

Asp.net mvc iis7网站ASP.NET MVC4配置会话已过期,asp.net-mvc,asp.net-mvc-4,session,iis,iis-7,Asp.net Mvc,Asp.net Mvc 4,Session,Iis,Iis 7,我有一个带有ASP.NETMVC4和razor的网站。 我不希望用户会话过期,我在webconfig中配置,我为一天后过期的会话设置会话。 在我的web配置中,我有以下内容: <authentication mode="Forms"> <forms loginUrl="~/raLogin/Login" timeout="1440"/> </authentication> .... .... <

我有一个带有ASP.NETMVC4和razor的网站。 我不希望用户会话过期,我在webconfig中配置,我为一天后过期的会话设置会话。 在我的web配置中,我有以下内容:

<authentication mode="Forms">
  <forms loginUrl="~/raLogin/Login" timeout="1440"/>
</authentication>
....
....
<sessionState mode="InProc" cookieless="false" timeout="1440" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</sessionState>
但是会议在20分钟后就结束了!! 然后我配置IIS7 windows server 2008 我安装了MS FW 4.0并执行aspnet_regiis.exe-ir 在ASP.NET v4 Classic的应用程序池中,我设置了此值,请参见图:

但会议在20分钟后结束 iss 7 I中的网站设置了以下值:


如何设置我的网站,使会话在一天后过期?

您可以使用SQLServer支持的持久化进程外状态机制。正如Erik所指出的,您可能希望查看您试图持久化的数据,因为会话变量可能不是最佳位置

状态机制说明和配置说明:

InProc、StateServer和SQLServer性能回顾:

如果您真的想变得花哨,您可以使用大男孩使用的分布式内存缓存,如AppFabric:

这是个坏主意。您在会话中放置的任何内容都将保留在内存中,直到会话过期或应用程序池被回收。因此,这可能是内存泄漏的来源,因为对象不会被垃圾收集。此外,您不能依赖于此,因为IIS随时都可以回收应用程序池,您无法阻止它,因此您应该编写应用程序,使其不依赖于会话可用,即使您刚刚登录。。因为它随时都可能消失。如果需要,您需要能够在会话中重新创建任何内容。