【问题标题】:ASP.net MVC3 app log off on server after a period of inactivity一段时间不活动后,ASP.net MVC3 应用程序在服务器上注销
【发布时间】:2012-08-26 06:30:42
【问题描述】:

我从默认的 ASP.net MVC 3 应用程序开始,在 web.config 文件中得到以下内容:

   <authentication mode="Forms">
     <forms loginUrl="~/Account/LogOn" timeout="2880" />
  </authentication>
    <machineKey/>
  <profile defaultProvider="DefaultProfileProvider">
     <providers>
        <add name="DefaultProfileProvider"
             type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
             connectionStringName="DefaultConnection"
             applicationName="/"/>
     </providers>
  </profile>
  <membership defaultProvider="DefaultMembershipProvider">
     <providers>
        <add name="DefaultMembershipProvider"
             type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
             connectionStringName="DefaultConnection" 
             enablePasswordRetrieval="false" 
             enablePasswordReset="true" 
             requiresQuestionAndAnswer="false" 
             requiresUniqueEmail="false" 
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="6" 
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10" 
             applicationName="/"                 
            />
     </providers>
  </membership>
  <roleManager enabled="true" defaultProvider="DefaultRoleProvider">
     <providers>
        <add connectionStringName="DefaultConnection"
             applicationName="/"
             name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
     </providers>
  </roleManager>
  <sessionState mode="InProc" customProvider="DefaultSessionProvider">
     <providers>
        <add name="DefaultSessionProvider"
             type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
             connectionStringName="DefaultConnection"
             applicationName="/"/>
     </providers>
  </sessionState>

在本地测试 - 一切正常 - 我去吃午饭,回来,对我的一个控制器(需要身份验证)进行 ajax 调用,它可以工作。

我在托管网络服务器上部署 - 我去吃午饭,回来,对控制器进行 ajax 调用 -> 结果我不再登录 - :(.

嗯... 现在从我可以弄清楚服务器的应用程序池被回收,所以我的会话数据被删除了。

我一直在试图弄清楚我必须在配置和代码方面进行哪些更改,以避免这种情况,但我无法在任何地方找到此信息,或者我可能没有询问正确的问题。

我如何确保在应用程序池回收时保持用户的会话(他保持登录状态)?

【问题讨论】:

    标签: asp.net session web-config webserver session-state


    【解决方案1】:

    您需要为会话使用数据库或 asp 状态服务器。

    http://msdn.microsoft.com/en-us/library/ms178586.aspx

    【讨论】:

    • 因此,如果我决定使用 SessionState(似乎最容易实现),我所要做的就是将 sessionState 提供程序更改为 ?
    • 假设有一个 StateServer 在该 ip/port 上运行,是的。
    猜你喜欢
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    相关资源
    最近更新 更多