Structuremap x Asp.net Identity

问题描述:

我有问题要注册一些这样的依赖关系。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 – 2014-12-03 09:20:48

您需要添加以下到您的structuremap容器与Asp.net身份工作。

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 2015-08-17 09:41:00