Я следую за архитектурой Луны и использую Identity Framework. В моей Основной проект, у меня есть:Simple Injector Identity 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' constuctor требует параметра 'IUserStore', поэтому SimpleInjector не может его создать. Вам нужно зарегистрировать 'IUserStore' в контейнере или делегировать для класса UserManager –
Но у меня нет IUserStore и нет конкретного класса для этого интерфейса, как я могу зарегистрироваться? –
@UsmanKhalid вам нужно будет выбрать реализацию UserStore или создать свой собственный ([здесь] (http://www.asp.net/identity/overview/getting-started/adding-aspnet-identity-to-an -пути-или-существующий-веб-формы-проект), [здесь] (http://www.asp.net/identity/overview/extensibility/overview-of-custom-storage-providers-for-aspnet-identity) и т.п.) – qujck