我正在遵循洋葱架构并使用身份验证框架。在我的核心项目中,我有:
在我的 Architecture.Repository 中,我有:
在我的依赖解析项目中,我有:
在
public interface IUserRepository : IDisposable
{
// Repository methods.......
}
在我的 Architecture.Repository 中,我有:
public class UserRepository : IUserRepository
{
// This is Identity UserManager
private readonly UserManager<AppUser, int> _userManager;
private readonly IAuthenticationManager _authenticationManager;
private bool _disposed;
public UserRepository(UserManager<User, int> userManager,
IAuthenticationManager authenticationManager)
{
_userManager = userManager;
_authenticationManager = authenticationManager;
}
}
在我的依赖解析项目中,我有:
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(IocConfig),
"RegisterDependencies")]
namespace AdShad.Infrastructure.DependencyResolution
{
public class IocConfig
{
public static void RegisterDependencies()
{
var container = new Container();
container.RegisterWebApiRequest<IUnitOfWork, UnitOfWork>();
container.RegisterWebApiRequest<IUserRepository, UserRepository>();
container.RegisterManyForOpenGeneric(typeof(IRepository<>),
typeof(BaseRepository<>).Assembly);
container.RegisterWebApiRequest<IEntitiesContext, MyContext>();
container.RegisterWebApiRequest(
() => HttpContext.Current.GetOwinContext().Authentication);
container.Verify();
HttpConfiguration config = new HttpConfiguration
{
DependencyResolver =
new SimpleInjectorWebApiDependencyResolver(container)
};
}
}
}
在
container.Verify()
时,我遇到了以下错误:
有人能指导我做错了什么以及我需要做什么来纠正它吗?发生了类型为“System.InvalidOperationException”的异常,但在用户代码中未处理。
额外的信息:配置无效。创建IUserRepository类型的实例失败。IUserRepository类型的注册委托引发了异常。找不到UserManager类型的注册,并且不能进行隐式注册。UserManager类型的构造函数包含名称为'store'的IUserStore类型参数,该参数未注册。请确保已注册IUserStore,或更改UserManager的构造函数。
UserManager
...异常提示了这一点,即UserManager
构造函数需要IUserStore
参数,因此SimpleInjector无法创建它。您需要在容器中注册IUserStore
或为UserManager
类委托。 - Sergey LitvinovUserStore
实现或创建自己的实现(这里,这里等)。 - qujck