我正在关注Onion体系结构并使用Identity Framework。在我的核心项目,我有:简单注射器身份UserManager <AppUser,Int32>注册错误
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()
,我我得到以下错误:
An exception of type 'System.InvalidOperationException' occurred in SimpleInjector.dll but was not handled in user code
Additional information: The configuration is invalid. Creating the instance for type IUserRepository failed. The registered delegate for type IUserRepository threw an exception. No registration for type UserManager could be found and an implicit registration could not be made. The constructor of type UserManager contains the parameter of type IUserStore with name 'store' that is not registered. Please ensure IUserStore is registered, or change the constructor of UserManager.
有人可以指导我做错了什么,我需要做些什么来纠正它?
但是你没有在容器中注册'UserManager' ......并且异常在说这个,UserManager'构造函数需要'IUserStore'参数,所以SimpleInjector不能创建它。你需要在'UserManager'类的容器或委托中注册'IUserStore'类 –
但是我没有任何IUserStore,也没有那个接口的具体类,我怎么注册? –
@UsageKhalid你需要选择一个'UserStore'实现或者创建你自己的([here](http://www.asp.net/identity/overview/getting-started/adding-aspnet-identity-to-an -empty-or-existing-web-forms-project),[这里](http://www.asp.net/identity/overview/extensibility/overview-of-custom-storage-providers-for-aspnet-identity)等等) – qujck