MVC 3 で ninject を使用してカスタム メンバーシップ プロバイダーにリポジトリを注入しようとしています。
MembershipProvider では、次のことを試しました。
[Inject]
public ICustomerRepository _customerRepository{ get; set; }
と
[Inject]
public TUMembershipProvider(ICustomerRepository customerRepository)
{
_customerRepository = customerRepository;
}
私のninjectモジュールでは、次のことを試しました:
Bind<MembershipProvider>().ToConstant(Membership.Provider);
上記のいずれも機能しません。
私が使用するとき(global.asaで)
kernel.Inject(Membership.Provider);
一緒に
[Inject]
public ICustomerRepository _customerRepository{ get; set; }
動作しますが、ライフサイクル管理がなく、NHibernate から「ISession が開いています」というエラーが発生します。これは、ISession が InRequestScope であり、リポジトリがそうでないためです。