Konfigurieren Sie Unity DI für die ASP.NET-Identität

Ich bin mit Unity erfolgreich für alle regulären constructor injection wie repositories etc., aber ich kann nicht erhalten, es funktioniert mit der ASP.NET Identität-Klassen. Das setup ist:

public class AccountController : ApiController
{
    private UserManager<ApplicationUser> _userManager { get; set; }

    public AccountController(UserManager<ApplicationUser> userManager)
    {
        if (userManager == null) { throw new ArgumentNullException("userManager"); }
        _userManager = userManager;
    }

    //...
}

mit diesen configs für die Einheit:

unity.RegisterType<AccountController>();
unity.RegisterType<UserManager<ApplicationUser>>(new HierarchicalLifetimeManager());
unity.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(new HierarchicalLifetimeManager());

Ist das das gleiche wie andere Beiträge hier für Autofac, z.B. Ninject, aber es funktioniert nicht in meinem Fall. Die Fehlermeldung ist:

Ist ein Fehler aufgetreten beim Versuch, einen Domänencontroller zu erstellen vom Typ "AccountController'. Stellen Sie sicher, dass der controller hat einen parameterlosen public-Konstruktor.
Das manuelle anlegen funktioniert natürlich:

public AccountController()
    : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>("Mongo")))
{
}

Was ist falsch?

UPDATE

Vorgeschlagen von @emodendroket, die Verkürzung der code dieser funktioniert der trick. Keine Notwendigkeit, für die Einheit.Mvc-Paket.

unity.RegisterType<IUserStore<IdentityUser>, 
  MyCustomUserStore>(new HierarchicalLifetimeManager());

und

public AccountController(UserManager<IdentityUser> _userManager,
  IAccountRepository _account)
{
    //...

InformationsquelleAutor der Frage Benjamin E. | 2014-02-21

Schreibe einen Kommentar