ASP.NET メンバーシップ プロバイダーがいつ、どのように作成されたか、およびその有効期間とガベージ コレクションに関する情報が必要でした。同じものを探してみましたが、具体的な情報を見つけることができませんでした。
2 に答える
一生
メンバーシップ プロバイダーは、シングルトンであるプロバイダー モデルに基づいています。
プロバイダーのInitializeメソッドは、アプリケーションがそのメソッドの 1 つを使用または呼び出した場合にのみ呼び出されます。プロバイダーが初期化されると、アプリケーションが破棄されるまで同じ設定が使用されます。
つまり、ユーザーが公開されているページのみを参照する場合、ユーザーはログインする必要がなく、アプリケーションはメンバーシップ プロバイダーを初期化する機会がまったくありません。
ガベージコレクション
プロバイダーは、アプリケーションの終了時にメモリを解放します。.NET Framework はガベージ コレクションを管理します。(私が間違っているかもしれません。この質問には答えられません)
個人的に CustomMembershipProvider を作成していません (MVC4 ベースの SimpleMembershipProvider を使用)。ただし、周辺の情報を見ると、MembershipProvider から派生した CustomMembershipProvider を実装するときに、以下のメソッドを実装することがわかります。
public override void Initialize(string name, NameValueCollection config)
Initialize() メソッドは、アプリケーション ルートによって呼び出されます (別のニーズに基づいて有効期間を制御したい場合を除きます)。
たとえば、VS2012 で新しい MVC4 Web アプリケーション インターネット テンプレートを作成すると、AccountController に属性「InitializeSimpleMembershipAttribute」が適用されていることがわかります。この属性により、メンバーシップ プロバイダーが初期化され、アプリケーションの有効期間ごとに 1 回だけ初期化されることが保証されます。
この初期化は別の方法で行われる場合があります。たとえば、アプリケーションの起動時に Global.asax.cs で設定される RegisterGlobalFilters() メソッドに属性を登録するか、メンバーシップ プロバイダーを使用して開始メソッドを登録し、初期化します。
アセンブリ: WebActivator.PreApplicationStartMethod
カスタム メンバーシップ プロバイダーを初期化する方法に基づいて、いつ破棄されるかがわかります。アプリケーション初期化コードの一部としてアプリケーションの起動時に初期化された場合、アプリケーションの破棄中または「ApplicationShutdownMethodAttribute」で登録したメソッドで破棄されます。
カスタム メンバーシップ プロバイダーの作成方法の詳細については、このリンクを確認してください。役立つ場合があります。