Sono bloccato. Stavo usando il metodo descritto qui per wcf web api p6 Ninject working with WCF Web API Preview 5, tuttavia le cose sono un po 'diverse con l'implementazione di mvc nella beta. C'è un buon articolo qui http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver che parla della creazione del tuo risolutore di dipendenze personalizzato, tuttavia vorrei usare la stessa implementazione che sto usando per i miei controller di visualizzazione mvc ... ad es. Ninject. Ho provato anche alcune cose basate sull'esempio di IoC Unity nell'articolo, ma non è ancora stato fatto nulla. Qualsiasi aiuto che mi indichi la giusta direzione sarebbe molto apprezzato. Continuerò a scavare anche da solo. Grazie in anticipo!Utilizzo di Ninject con Asp.NET Web API Beta ApiController
Ecco dove sono. Stavo usando WebActivator per fare il bootstrap del codice, ma da allora l'ho scaricato su Application_Start() solo per prendere un'altra cosa dall'equazione.
protected void Application_Start()
{
var kernel = new StandardKernel(new MyNinjectModule());
GlobalConfiguration.Configuration.ServiceResolver.SetResolver(new NinjectDependencyResolver(kernel));
}
E sto ricevendo il seguente errore:
Il tipo Ninject.Web.Mvc.NinjectDependencyResolver non sembra implementare Microsoft.Practices.ServiceLocation.IServiceLocator. Nome
parametro: commonServiceLocator
trovato la soluzione
forse c'è/sarà un modo più elegante, ma questo sta lavorando per me. Sto anche aggiungendo il mio gestore di messaggi personalizzati anche qui.
[assembly: WebActivator.PreApplicationStartMethod(typeof(MyApp.AppStart.ApiBootstrapper), "Start")]
namespace MyApp.AppStart
{
public class ApiBootstrapper
{
public static void Start()
{
var kernel = new StandardKernel(new MyNinjectModule());
var resolver = new NinjectDependencyResolver(kernel);
GlobalConfiguration.Configuration.ServiceResolver.SetResolver(resolver.GetService, resolver.GetServices);
GlobalConfiguration.Configuration.MessageHandlers.Add(new ApiAuthHandler());
}
}
}
Questo è abbastanza bella soluzione: http://haacked.com/archive/2012/03/11/itrsquos- the-little-things-about-asp-net-mvc-4.aspx –
controlla anche il pacchetto di @Remo Gloor qui sotto se vuoi usare gli stessi binding per entrambi i tipi di controller. Puoi trovarlo su github e installarlo da nuget. –