AspNet Identity e IoC Container Unity

Vediamo come utilizzare nella stessa applicazione web AspNet Identity e Unity. Lanciando la nostra applicazione senza settare niente otteniamo infatti questo errore
Error

Osservando i dettagli possiamo capire che si tratta di un errore in fase di creazione dell'AccountController. Unity seleziona infatti, in mancanza di altre direttive, il costruttore con il maggior numero di parametri e nel nostro caso non riesce a risolvere tutti i tipi necessari.

Come fare? Aprire il file App_Start\UnityConfig.cs e sostituire le direttive di using con le seguenti:

using System;
using System.Data.Entity;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
using HireMeNow.Data.Models.Repository;
using HireMeNow.Web.Models;
using Microsoft.Owin.Security;
using System.Web;
using MyWebSite.Web.Controllers;

Inoltre all'interno del metodo statico RegisterTypes resistrare i tipi:

container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>();
container.RegisterType<UserManager<ApplicationUser>>();
container.RegisterType<DbContext, ApplicationDbContext>();
container.RegisterType<ApplicationUserManager>();
container.RegisterType<AccountController>(new InjectionConstructor());

In particolare l'ultima riga (con InjectionConstructor) serve per specificare quale costruttore utilizzare in fase di creazione di un AccountController, nel nostro caso quello senza parametri.