我在我的MVC应用程序错误中使用Simple Injector,我收到以下错误:
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代码,所以我无法/不会改变它。
任何人都可以解释这个错误并告诉我如何解决它吗?
答案 0 :(得分:1)
container.Register<IUserStore<ApplicationUser>>(() => new UserStore<ApplicationUser>());
需要注册用户存储,但它有多个构造函数,因此您需要添加上面的行