1

У меня есть следующий общий webApi2 AccountController: -Регистрация UserStore с SimpleInjector для AccountController/ApplicationUserManager

private const string LocalLoginProvider = "Local"; 
    private ApplicationUserManager _userManager; 

    public AccountController(ApplicationUserManager userManager, 
     ISecureDataFormat<AuthenticationTicket> accessTokenFormat) 
    { 
     UserManager = userManager; 
     AccessTokenFormat = accessTokenFormat; 
    } 

    public ApplicationUserManager UserManager 
    { 
     get 
     { 
      return _userManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
     } 
     private set 
     { 
      _userManager = value; 
     } 
    } 

И следующее в IdetityConfig.cs: -

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

и я использую следующие SimpleInjector сделать мой DI: -

public static class SimpleInjectorWebApiInitializer 
{ 
    /// <summary>Initialize the container and register it as Web API Dependency Resolver.</summary> 
    public static void Initialize() 
    { 
     var container = new Container(); 
     container.Options.DefaultScopedLifestyle = new WebApiRequestLifestyle(); 

     InitializeContainer(container); 

     container.RegisterWebApiControllers(GlobalConfiguration.Configuration); 

     container.Verify(); 

     GlobalConfiguration.Configuration.DependencyResolver = 
      new SimpleInjectorWebApiDependencyResolver(container); 

    } 

    private static void InitializeContainer(Container container) 
    { 
     // For instance: 
     container.Register<IFileHelpers, FileHelpers>(); 

     //container.Register<UserManager<ApplicationUser, string>>(
     // () => new UserManager<ApplicationUser, string>(new UserStore<ApplicationUser>()), 
     // Lifestyle.Scoped); 
     //container.Register<IUserStore<ApplicationUser, string>>(() => (new UserStore<ApplicationUser>()), 
     // Lifestyle.Scoped); 

     container.Register<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(); 
    } 
} 

Однако я получаю ИНГ следующее сообщение об ошибке: - «Для контейнера, чтобы иметь возможность создавать UserStore<ApplicationUser> он должен иметь только один открытый конструктор: он имеет 2. См https://simpleinjector.org/one-constructor для получения дополнительной информации.»

Может кто-нибудь помочь мне и скажите мне, почему я получить следующую ошибку для UserStore? Есть ли другой способ определить это?

Спасибо за помощь и время!

ответ

0

Просто измените свою регистрацию на следующее:

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

Я получил следующее сообщение об ошибке: - Новое выражение требует(), [] или {} после типа – Johann

+0

@Johann обновил свой ответ. – Steven

+0

Прохладный Стивен, который работал спасибо! – Johann

Смежные вопросы