9

MembershipProvider をオーバーライドして直接呼び出す場合、設定の構成ファイルを手動で調べることなく、Initialize メソッドの NameValueCollection 構成パラメーターを入力する方法はありますか?

明らかに、この Initialize は asp.net によって呼び出されており、構成はどこかに入力されています。私は独自の MembershipProvider を実装しましたが、ビルドイン コントロールによって正常に動作します。プロバイダーの新しいインスタンスを作成して直接呼び出したいのですが、MembershipProvider の .config を解析したくありません。それは接続文字列名であり、既にどこかで行われている場合は接続文字列です。 .

4

3 に答える 3

21

tvanfosson- 助けてくれてありがとう。(必要な15ポイントがあれば、あなたに投票します)

あなたのリンクから、私はそれを理解することができました。Initialize プロシージャの 2 番目のパラメーターは、プロバイダーからのパラメーターのリストであり、次の方法で到達できることがわかりました。

string configPath = "~/web.config";
Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);
MembershipSection section = (MembershipSection)config.GetSection("system.web/membership");
ProviderSettingsCollection settings = section.Providers;
NameValueCollection membershipParams = settings[section.DefaultProvider].Parameters;
Initialize(section.DefaultProvider, membershipParams);
于 2008-10-24T21:10:19.117 に答える
7

新しいものを作成する理由はわかりませんが、自分で作成する場合は、Web 構成を読み取って値を自分で取得して Initialize() に渡す必要があります。これはクラスの外部で行われるためです。ただし、このセクションのセクション ハンドラーが既にあると確信しているため、次のようにするだけで済みます。

MembershipSection section  = WebConfigurationManager.GetSection("membership");

次に、プロバイダを見つけてそのプロパティにアクセスし、NameValueCollection を構築します。構成セクションを解析するためにコードを記述する必要はないと思います。

MSDNのMembershipSectionドキュメントは次のとおりです。そこからドリルダウンします。

于 2008-10-24T16:44:51.977 に答える
0

いずれにせよ、MembershipProvider のインスタンスを作成しないでください。標準のasp.netインフラストラクチャによって作成および初期化しています。次のようなコードでアクセスできます。

var customerMembership = Membership.Provider;

于 2014-01-27T01:13:26.223 に答える