2014-11-03 2 views
2

У меня возникли проблемы с регистрацией некоторых зависимостей, подобных этому.Structuremap x Asp.net Identity

No default Instance is registered and cannot be automatically determined for type 'IUserStore<ApplicationIdentityUser, Int32>' 

There is no configuration specified for IUserStore<ApplicationIdentityUser, Int32> 


1.) new UserManager`2(*Default of IUserStore<ApplicationIdentityUser, Int32>*) 
2.) UserManager<ApplicationIdentityUser, Int32> 
3.) Instance of UserManager<ApplicationIdentityUser, Int32> 
4.) new ApplicationUserManager(*Default of UserManager<ApplicationIdentityUser, Int32>*, *Default of IAuthenticationManager*) 
5.) MyClinic.Infra.Data.Identity.ApplicationUserManager 
6.) Instance of MyClinic.Core.Identity.IApplicationUserManager (MyClinic.Infra.Data.Identity.ApplicationUserManager) 
7.) new AccountController(*Default of IApplicationUserManager*) 
8.) MyClinic.Web.Controllers.AccountController 
9.) Instance of MyClinic.Web.Controllers.AccountController 
10.) Container.GetInstance(MyClinic.Web.Controllers.AccountController) 

Помогло ли мне кто-нибудь?

контроллер Мой счет:

public class AccountController : Controller 
{ 
    private IApplicationUserManager _userManager; 
    public AccountController(IApplicationUserManager userManager) 
    { 
     _userManager = userManager; 
    } 
} 

Мой менеджер приложений пользователя:

public class ApplicationUserManager : IApplicationUserManager 
{ 
    private readonly UserManager<ApplicationIdentityUser, int> _userManager; 
    private readonly IAuthenticationManager _authenticationManager; 
    private bool _disposed; 

    public ApplicationUserManager(UserManager<ApplicationIdentityUser, int> userManager, IAuthenticationManager authenticationManager) 
    { 
     _userManager = userManager; 
     _authenticationManager = authenticationManager; 
    } 
} 
+0

Есть и другие вариации этого вопроса. Это может помочь вам: http://stackoverflow.com/a/27244289/351204 –

ответ

15

Вам нужно добавить следующую строку в ваш StructureMap контейнер для работы с ASP.Net Identity.

For<IUserStore<ApplicationUser>>().Use<UserStore<ApplicationUser>>(); 
For<DbContext>().Use(() => new ApplicationDbContext()); 
For<IAuthenticationManager>().Use(() => HttpContext.Current.GetOwinContext().Authentication); 

Кроме того, вам нужно будет установить пакет

Microsoft.Owin.Host.SystemWeb 

получить метод расширения GetOwinContext() появится на HttpContext.Current

+0

спасибо, это помогло. – SHM

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