2

ASP.NET メンバーシップ プロバイダーがいつ、どのように作成されたか、およびその有効期間とガベージ コレクションに関する情報が必要でした。同じものを探してみましたが、具体的な情報を見つけることができませんでした。

4

2 に答える 2

1

一生

メンバーシップ プロバイダーは、シングルトンであるプロバイダー モデルに基づいています。

プロバイダーのInitializeメソッドは、アプリケーションがそのメソッドの 1 つを使用または呼び出した場合にのみ呼び出されます。プロバイダーが初期化されると、アプリケーションが破棄されるまで同じ設定が使用されます。

つまり、ユーザーが公開されているページのみを参照する場合、ユーザーはログインする必要がなく、アプリケーションはメンバーシップ プロバイダーを初期化する機会がまったくありません。

ガベージコレクション

プロバイダーは、アプリケーションの終了時にメモリを解放します。.NET Framework はガベージ コレクションを管理します。(私が間違っているかもしれません。この質問には答えられません)

于 2013-09-25T20:52:17.903 に答える
1

個人的に 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」で登録したメソッドで破棄されます。

カスタム メンバーシップ プロバイダーの作成方法の詳細については、このリンクを確認してください。役立つ場合があります。

于 2013-09-25T11:41:43.880 に答える