gpt4 book ai didi

c# - 为 AccountController/ApplicationUserManager 向 SimpleInjector 注册 UserStore

转载 作者:行者123 更新时间:2023-11-30 23:21:17 27 4
gpt4 key购买 nike

我有以下通用 webApi2 AccountController:-

    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> 的容器,它应该只有一个公共(public)构造函数:它有 2 个。有关更多信息,请参阅 https://simpleinjector.org/one-constructor。”

任何人都可以帮助我并告诉我为什么 UserStore 会出现以下错误吗?有没有其他方法可以定义它?

感谢您的帮助和时间!

最佳答案

只需将您的注册更改为以下内容:

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

关于c# - 为 AccountController/ApplicationUserManager 向 SimpleInjector 注册 UserStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39279806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com