У меня есть следующий общий 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? Есть ли другой способ определить это?
Спасибо за помощь и время!
Я получил следующее сообщение об ошибке: - Новое выражение требует(), [] или {} после типа – Johann
@Johann обновил свой ответ. – Steven
Прохладный Стивен, который работал спасибо! – Johann