Domanda

Sono bloccato. Stavo usando il metodo delineato qui per WCF Web API P6 Ninject Working con WCF Web API Anteprima 5, Tuttavia, le cose sono un po 'diverse con l'implementazione MVC nella beta. C'è un buon articolo qui http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dipendency-resolver Questo parla della costruzione del tuo risolutore di dipendenza personalizzata, tuttavia vorrei usare la stessa implementazione che sto usando per i miei controller di visualizzazione MVC ... ad es. Ninject. Ho provato alcune cose basate sull'esempio dell'unità IOC nell'articolo, ma non è ancora uscito nulla. Qualsiasi aiuto che mi indica nella giusta direzione sarebbe molto apprezzato. Continuerò a scavare anche da solo. Grazie in anticipo!

Ecco dove sono. Stavo usando WebActivar per bootstrap il codice, ma da allora l'ho lasciato cadere su Application_Start () solo per eliminare 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:
Type ninject.web.mvc.ninjectDependencyResolver non sembra implementare Microsoft.Practices.Servicelocation.iserviceLocator.
Nome parametro: CommonserviceLocator

Ho trovato la soluzione
Forse c'è/sarà un modo più elegante, ma ora funziona per me. Sto anche aggiungendo anche il mio gestore di messaggi personalizzati 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());
        }
    }
}

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top