【问题标题】:iis7 Web Site ASP.NET MVC4 config session expirediis7 网站 ASP.NET MVC4 配置会话已过期
【发布时间】:2014-07-28 13:24:41
【问题描述】:

我有一个使用 ASP.NET MVC 4 和 razor 的网站。 我不希望用户会话过期,我在 webconfig 中配置,我设置了一天后过期的会话。 在我的网络配置中,我有这个:

<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 分钟后过期!! 然后我配置 IIS 7 (windows server 2008) 我安装了 MS FW 4.0 并执行 aspnet_regiis.exe -ir 在 ASP.NET v4 Classic 的应用程序池中,我设置了这个值(见图):

但会话在 20 分钟后过期 ISS 7 中的网站我设置了这个值:

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

【问题讨论】:

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

标签: asp.net-mvc asp.net-mvc-4 session iis iis-7


【解决方案1】:

您可以使用由 SQLServer 支持的持久的进程外状态机制。正如 Erik 指出的那样,您可能需要查看您尝试保留的数据,因为会话变量可能不是最佳位置。

状态机制说明及配置说明: http://msdn.microsoft.com/en-us/library/vstudio/ms178586(v=vs.100).aspx

InProc、StateServer 和 SQLServer 性能回顾: http://www.nullskull.com/a/1611/aspnet-session-how-to-faqs.aspx

如果你真的想花哨,你可以使用大男孩的使用,分布在内存缓存中,例如 AppFabric: http://msdn.microsoft.com/en-us/library/ee790859(v=azure.10).aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 2012-10-12
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2016-08-04
    • 1970-01-01
    相关资源
    最近更新 更多