0

デフォルトの 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>

ローカルでテスト - すべて正常に動作します - 昼食に行き、戻ってきて、コントローラーの 1 つ (認証が必要な場所) に ajax 呼び出しを行うと、動作します。

私はホスティング Web サーバーにデプロイします - 私は昼食に行き、戻ってきて、コントローラに ajax 呼び出しを行います -> ログインしていないことがわかりました - :(.

うーん...サーバーのアプリプールがリサイクルされたため、セッションデータが削除されたことがわかりました。

この種のシナリオを回避するために、構成とコードに関してどのような変更を加える必要があるかを理解しようとしていますが、この情報がどこにも見つからないか、正しい質問をしていない可能性があります。

アプリ プールがリサイクルされたときに、ユーザーのセッションが維持される (ログインしたままになる) ことを確認するにはどうすればよいですか?

4

1 に答える 1

4

セッションには、データベースまたは asp 状態サーバーのいずれかを使用する必要があります。

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

于 2012-08-31T12:26:05.033 に答える