Web API Help Page e Unity

Abbiamo delle Web API in cui abbiamo deciso di utilizzare Unity come IoC Container. Tutto funziona alla perfezione ma quando andiamo a consultare la Help Page il risultato è un errore.

Perché? Unity utilizza il costruttore con il maggior numero di parametri, in questo caso quello con il parametro di tipo System.Web.Http.HttpConfiguration. Quindi cerca di risolvere quest'ultimo risolvendo a cascata tutti i tipi dei parametri dei costruttori fino ad arrivare a String dove, come si può vedere dal messaggio, viene sollevata l'eccezione.

Come risolvere questo problema? Apriamo il Controller Help (file Areas\HelpPage\Controllers\HelpController.cs) ed eliminiamo il costruttore con il parametro. Quindi sostituiamo

public HelpController()
    : this(GlobalConfiguration.Configuration)
{
}

public HelpController(HttpConfiguration config)
{
    Configuration = config;
}

con

public HelpController()
{
    Configuration = GlobalConfiguration.Configuration;
}

Oppure indichiamo ad Unity il costruttore da utilizzare (quello senza parametro) decorandolo con l'attributo [InjectionConstructor]

[InjectionConstructor]
public HelpController()
    : this(GlobalConfiguration.Configuration)
{
}

public HelpController(HttpConfiguration config)
{
    Configuration = config;
}