1

実稼働環境(IIS 7.5 + SQL Server 2008)でWebフォームにログインすると、セッションは数秒(1分未満)後に期限切れになります。しかし、開発環境(ASP.Net Development Server + SQL Server 2008)で同じことを行うと、セッションは十分に長く持続します...(数分)。フォーム認証モードでASP.Netメンバーシップテクノロジを使用し、Cookieを使用しようとしています。サーバー上の何かが私のパラメーターをオーバーライドしているように見えますが、本番IIS構成にアクセスできません(共有ホスティングにサブスクライブしました)

これが私のweb.configパラメータです:

  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <authentication mode="Forms">
      <forms loginUrl="~/Pages/Front/Login.aspx"
             protection="All"
             timeout="900"
             path="/"
             requireSSL="false"
             slidingExpiration="true"
             defaultUrl="~/Pages/Front"
             cookieless="UseCookies"
             name="MySite" />
    </authentication>
    <membership defaultProvider="AspNetSqlMembershipProvider">
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider"
             type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             connectionStringName="XXX"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="true"
             applicationName="/"
             requiresUniqueEmail="false"
             passwordFormat="Hashed"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="5"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             passwordStrengthRegularExpression=""/>
      </providers>
    </membership>
    <roleManager enabled="true"
                 cookieName="booble.com"
                 cookieProtection="All"
                 cookieSlidingExpiration="true"
                 cookieTimeout="90"
                 createPersistentCookie="true"
                 cookieRequireSSL="false">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="XXX" applicationName="/" />
        <!--<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />-->
      </providers>
    </roleManager>
    <sessionState timeout="90" />
    <customErrors defaultRedirect="Error.aspx" mode="On" redirectMode="ResponseRewrite" >
      <error statusCode="404" redirect="Error404.aspx"/>
    </customErrors>
    <!-- needed because of my Provider-->
    <pages enableViewStateMac="false" />
    <siteMap enabled="true" defaultProvider="AspNetXmlSiteMapProvider">
      <providers>
        <clear />
        <add siteMapFile="Web.sitemap" name="AspNetXmlSiteMapProvider"
            type="System.Web.XmlSiteMapProvider, System.Web,  Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                securityTrimmingEnabled="true" />
      </providers>
    </siteMap>

  </system.web>

あなたの答えを前もってたくさんありがとう!

4

2 に答える 2

1

セッションタイムアウトがコードによっても設定されているかどうかを確認します。

<sessionState timeout="90" />

cookieTimeout="90"

うまくいくはずだった。開発サーバーは、セッションのタイムアウトについて非常に寛容です。

開発サーバーが適切なIIS7環境を表していない

これにより、IIS 7を使用せずにASP.NETアプリケーションをテストする便利な方法が提供されます。ただし、IIS7環境を使用してアプリケーションをテストするようにVisualStudioを構成することをお勧めします。この理由は次のとおりです。ASP.NET開発サーバーは、IIS 7で使用される既定の操作モードである統合モードでのASP.NETアプリケーションのホスティングをサポートしていません。これにより、アプリケーションの動作に違いが生じる可能性があります。

こちらをご覧ください

于 2012-06-07T06:48:31.143 に答える
1

問題は私の共有ホスティングプロバイダーから来ていました、私は彼らのヘルプフォーラムで彼らに連絡しました、そして彼らの管理者はサーバー側で何かを「変更」しました、そして今それはうまくいきます...彼らは彼らが何を変更したか私に伝えたくありませんでした。

参考までに、私の共有ホスティングプロバイダーの名前はOVH.comなので、セッションタイムアウトの問題(30秒から1分ごとに期限切れ)がある場合は、web.configを正しく構成していても(確かに、sessionStateモードにします) = "SQLServer")、彼らに連絡するだけで、彼らは必要なことをします。

説明があればここに投稿します、お読みいただきありがとうございます

于 2012-06-12T01:27:13.857 に答える