0

ウィンザーコンテナMembershipProviderをクラスで実装しています。実装を解決することはできますが、web.configから値を取得するInitializeメソッドは呼び出されません。それをインスタンス化して、それがInitializeメソッドを呼び出すことを確認するにはどうすればいいですか?ウィンザーキャッスルでMembershipProviderを使用する

コードがコンテナ

container.Register(Component.For<FNHMembershipProvider>() 
    .LifeStyle.Transient 
    .Named("myMembershipProvider")); 

container.Register(Component.For<FNHRoleProvider>() 
    .LifeStyle.Transient 
    .Named("myRoleProvider")); 

答えて

0

に追加するには、ここで重要な点は、あなたがメンバシッププロバイダ注入している、メンバーシップクラスを注入されていないということです。 Membershipクラスは、レジストリエントリに基づいてメンバシッププロバイダを設定し、intializeを呼び出します。メンバシップクラスは静的クラスであり、挿入することはできません(静的メンバーシップクラスを返すラッパークラスを挿入することもできますが、そこには大きな利点はありません)。

一般的に、メンバーシップをDIにしようとすると、その価値よりもずっと痛いことがわかります。

+0

自分の要件に基づいてDIを使用する必要があります。だから私は、ラッパーを作成し、私のコントローラに注入し、そのラッパーをGetUserに呼び出す、ユーザーを作成するなど? – Reaction21

+0

はい、そうです。私はそれがmvc3アプリケーションのVSテンプレートに付属しているアプリスケルトンにあなたが見つけたアプローチだと思います。テンプレートはDIを使用しませんが、DIに切り替える方法は非常に簡単です。 – Crixo

関連する問題