1


ASP.NETメンバーシップとフォーム認証に関連する問題があります。私はこれについてかなり長い間(StackOverflow.comを含めて)解決策を探していましたが、私のシナリオに関していくつかの解決策を見つけることができませんでした。私を助けてください。

アプリケーションでASP.NETメンバーシップとフォーム認証を使用しています。問題は、アプリケーションを約30分以上テストしているときに、次のエラーが発生することです。-
1)プールから接続を取得する前にタイムアウト期間が経過した。これは、プールされたすべての接続が使用されていて、最大プールサイズに達したために発生した可能性があります。
2)セッションは期限切れにならず、ログインページにリダイレクトされません。
3)セッション値が数回nullになります。


アプリケーションも本番環境にありますが、クライアントは上記の問題のいずれもまだ報告していません。

以下のWeb.config設定をご覧ください:-

<sessionState timeout="30" mode="InProc">
</sessionState>

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
    <providers>
        <clear/>
        <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DBSQLServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" passwordFormat="Hashed" applicationName="/ApplicationPortal"/>
    </providers>
</membership>       

<add name="DBSQLServer" connectionString="Data Source=SERVER-NAME\SQLEXPRESS2008;Initial Catalog=DB-Name;Max Pool Size=100;Trusted_Connection=True;" providerName="System.Data.SqlClient"/>

そして、セクションを忘れないでください:-

<authentication mode="Forms">
  <forms loginUrl="~/Login.aspx" defaultUrl="~/Login.aspx" protection="All" timeout="30">
  </forms>
</authentication>

破棄されなかった接続はほとんどありませんでしたが、現在はすべての接続が適切に破棄されています。DataReadersを閉じることでこれは解決されることがどこかで見つかりましたが、すべての接続を破棄したので、シナリオでDataReadersを閉じたり破棄したりしない場合、これは影響しますか?

また、これら2つのエラーを同時に引き起こしている可能性のある問題と、これら2つの問題を修正するにはどうすればよいかを知りたいと思います。

多くのページでインラインクエリも使用されています。

4

1 に答える 1

0

これはすべて、貧弱な設計のように聞こえます。

  1. リクエストごとに1つの接続を使用し、いずれにしてもそれを破棄していることを確認してください(最終的にブロックします)
  2. セッションの有効期限が切れていないと言うとき、確かなリクエストを行わずにタイムアウト期間を待っていましたか?
  3. セッション値がクリアされると、実際には、IIS ワーカー プロセスがリサイクルされたため、セッションが期限切れまたはクリアされたことを意味します。ワーカーのリサイクル ポリシーを調整するか、データベースでセッション状態を設定します。
  4. セッションがログイン ページにリダイレクトされないと言っている場合、これは間違っています。セッションはログインページとは何の関係もありません。ログインが必要なページにアクセスしようとすると、そこにリダイレクトされます。
于 2012-11-19T08:41:46.943 に答える