我想在ASP.NET MVC 2自綁定MembershipProvider,然後在AccountController構造函數中使用此綁定。與Ninject自綁定成員資格提供商
這是從我的global.asax.cs
// selfbind MembershipProvider in request scope
Bind<MembershipProvider>().ToSelf().InRequestScope();
一個片段和服務類的代碼段:
public AccountMembershipService(MembershipProvider provider, IAccountRepository accountRepository)
{
_provider = provider ?? Membership.Provider;
_accountRepository = accountRepository;
}
我的問題是注射不工作(在注射AccountRepository但是工作)。這是從Ninject錯誤:
Error activating MembershipProvider using self-binding of MembershipProvider
No constructor was available to create an instance of the implementation type.
Activation path:
3. Injection of dependency MembershipProvider into parameter provider of constructor of type AccountMembershipService
2. Injection of dependency IMembershipService into parameter membershipService of constructor of type AccountController
1. Request for IController
Suggestions:
1) Ensure that the implementation type has a public constructor.
2) If you have implemented the Singleton pattern, use a binding with InSingletonScope() instead.
設置InSingletonScope()沒有什麼區別,並因爲這不是一個自定義的MembershipProvider但隨ASP.NET默認的一個我不能做的任何構造。
我被困在這裏,不知道如何解決這個問題。
是的,我覺得你的問題是與內核綁定到供應商...試試這個:綁定<的MembershipProvider>()來()InRequestScope()。 ;你應該沒有必要通過該回購,它應該注入到MembershipProvider ctor ...這就是爲什麼你需要一個空的和一個回購它。 –
CrazyDart
2010-10-14 17:15:52
我目前沒有自定義會員供應商。我想要使用默認的Membership.Provider提供程序。但如果我們將來實施定製提供商,仍然有一切準備就緒。 – mare 2010-10-14 17:23:34
Hrmmm,我認爲你應該標記我的答案,因爲我是正確的,綁定是不好的....我可以使用的要點。 – CrazyDart 2010-10-14 19:47:16