Настройка ApplicationUserManager Identity Framework в простом инжекторе

#asp.net-mvc #dependency-injection #simple-injector

#asp.net-mvc #внедрение зависимостей #простой инжектор

Вопрос:

Я использую простой инжектор в своей ошибке приложения MVC и получаю следующую ошибку:

Конструктор типа ApplicationUserManager содержит параметр с именем ‘store’ и типом IUserStore, который не зарегистрирован. Пожалуйста, убедитесь, что IUserStore зарегистрирован, или измените конструктор ApplicationUserManager.

Он хочет, чтобы я зарегистрировал UserStore , я думаю, мне нужно зарегистрировать его в UserManager , но я не уверен, что делать.

Я думал, что это должно было выглядеть так:

 private static void InitializeContainer(Container container)
{
    container.Register<IAuthorisationManager, AuthorisationManager>();
    container.Register<IAuthorisationRepository, AuthorisationRepository>();
    container.Register<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>();
}
  

Конфигурация идентификатора:

 public class ApplicationUserManager : UserManager<ApplicationUser>
{
    public ApplicationUserManager(IUserStore<ApplicationUser> store) : base(store) { }
}
  

Но затем я получаю сообщение об ошибке:

Чтобы контейнер мог его создавать UserStore<ApplicationUser> , у него должен быть только один общедоступный конструктор: у него 2. См https://simpleinjector.org/one-constructor для получения дополнительной информации.

Но это по умолчанию ASP.NET код, чтобы я не мог / не хотел его менять.

Кто-нибудь может объяснить эту ошибку и сказать мне, как ее исправить, пожалуйста?

Ответ №1:

 container.Register<IUserStore<ApplicationUser>>(() => new UserStore<ApplicationUser>());
  

Необходимо зарегистрировать хранилище пользователей, но оно имеет несколько конструкторов, поэтому вам нужно добавить приведенную выше строку

Комментарии:

1. Хотя это возможное решение, это скорее обходной путь. Пожалуйста, ознакомьтесь с этой темой для полной настройки Identity с помощью simple injector: simpleinjector.codeplex.com/discussions/564822 . Это также дает несколько советов по различным рефакторингам в дерьмовом шаблоне.