ASP.net MVC3应用程序在服务器上处于非活动状态一段时间后注销



我从默认的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调用,它就工作了。

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

嗯。。。现在,我可以计算出服务器的应用程序池被回收,所以我的会话数据被删除了。

我一直在努力弄清楚我必须做出什么样的改变,配置&代码方面,为了避免这种情况,但我在任何地方都找不到这些信息,或者可能我问的问题不对。

当应用程序池回收时,我如何确保用户的会话得到维护(他仍然登录)

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

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

相关内容

最新更新