Я пытаюсь самостоятельно связать членствоProvider в ASP.NET MVC 2, а затем использовать эту привязку в конструкторе AccountController.Self binding Членский провайдер с 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.
Я застрял здесь, не знаю, как это решить.
Да, я думаю, ваша проблема с привязкой ядра к провайдеру ... попробуйте следующее: Bind() К () InRequestScope().. ; Вам не нужно будет передавать это репо, оно должно быть введено в MemberhipProvider ctor ... вот почему вам нужен пустой и один с вашим репо на нем. –
CrazyDart
У меня нет пользовательского провайдера членства на данный момент. Я хочу использовать провайдера Membership.Provider по умолчанию. Но все еще есть все готово, если мы в будущем внедрим пользовательский поставщик. – mare
Хмммм, я думаю, вы должны отметить меня для ответа, поскольку я был прав, что привязка была плохая ... и я мог бы использовать очки. – CrazyDart