2013-12-16 5 views
3

С выпуском MVC 5 появляются биты Asp.Net.Identity, включая UserManager. Мгновенное действие может стать беспорядочным, и я пытаюсь добавить его с настройками контроллера Autofac.Как подключить экземпляр UserManager ASP.NET MVC 5 с помощью Autofac?

конструктор контроллера

public LoginController(UserManager<ApplicationUser> userManager) 
{ 
    UserManager = userManager; 
} 

вручную создать новый экземпляр:

var controller = new LoginController(UserManager<ApplicationUser>(new ApplicationUserStore<ApplicationUser>(new MyDbContext()))); 

ApplicationUserStore класс/конструктор:

public class ApplicationUserStore<TUser> : IUserLoginStore<TUser>, IUserStore<TUser>, IDisposable where TUser : ApplicationUser 

public ApplicationUserStore(IMyDbContext context) 
{ 
    Context = context; 
} 

У меня есть новый для контекста БД работает корректно:

builder.RegisterType<MyDbContext>().As<IMyDbContext>(); 

Какая будет подпись регистрации для LoginController?

ответ

6

Я не знаю AutoFac, но дикая догадка:

builder.RegisterType<ApplicationUserStore<ApplicationUser>>() 
    .As<IUserStore<ApplicationUser>>(); 
builder.RegisterType<UserManager<ApplicationUser>>(); 
+0

Хорошо догадка! Я обновил вопрос, включив определение класса ApplicationUserStore, поскольку он реализует больше, чем IUserStore. Но для этого случая, основываясь на регистрации Autofac на то, что он реализует IUserStore, достаточно хорошо, я думаю. Благодарю. – RyanW

+0

Правильно, он реализует IUserRoleStore, IUserPasswordStore и т. Д., Но UserManager нуждается только в IUserStore в качестве аргумента. Затем он пытается обнаружить поддержку для других интерфейсов внутри компании. – danludwig

Смежные вопросы