ASP.Net は、静的メンバーシップクラスとその静的Providerプロパティを介して、現在のメンバーシップ プロバイダーの静的インスタンスを既に提供しています。バインディングはおそらく Application_Start メソッドにあり、次のようになります。
Bind<MembershipProvider>()
.ToMethod(ctx => Membership.Provider);
繰り返しますが、Memberhip.Providerは静的であるため、すでにシングルトンのようなものです。そのため、適用しようとする動作はそれほど重要ではありません。
上記のスニペットで動作を指定しないと、Ninject はデフォルトで一時的な動作になります。この種のバインディングでは、 MembershipProvider型 を挿入する必要があるたびに、Membership.Providerを返すラムダを呼び出すことになると思います。
Ninject は、初めてMembershipProviderを注入する必要があるときにラムダによって返された値を「キャッシュ」する可能性が高いため、シングルトンの動作を明示的に指定するための引数があると思います。これにより、ラムダを実行するオーバーヘッドが節約されます。この状況で Ninject がそのように機能するかどうかは 100% 確信が持てませんが、そうするのが妥当だと思われます。
とは言っても、私の個人的な好みはOnePerRequestBehaviorを使用することです。これにより、Ninject が要求ごとに 1 回ラムダを呼び出すことがわかります。必要かどうかはわかりませんが、 Membership.Providerがどのように、またはいつ設定されるかについて推測できないと思うので、リクエストごとに一度、 Membership.Providerからプロバイダーを取得するというアイデアが気に入っています。リフレクター付き。
Bind<MembershipProvider>()
.ToMethod(ctx => Membership.Provider)
.Using<OnePerRequestBehavior>();
幸運を。申し訳ありませんが、あなたの質問はここに長い間座っていました!