Qualcuno sa di una buona guida per ottenere Ninject 2 di lavoro in ASP.NET MVC?
-
12-09-2019 - |
Domanda
sto lottando con la documentazione per capire esattamente che cosa ho bisogno. La documentazione (la mia comprensione) è per 1,5 in ogni caso.
NB: Non voglio estendere NinjectHttpApplication
Ho configurato in modo da utilizzare il NinejctControllerFactory in Application_Start () ma ottengo un'eccezione riferimento null sulla KernelContainer.Kernel quando si cerca di creare un controller. Dove si configura il kernel se non mi si estende NinjectHttpApplication?
Soluzione
Date un'occhiata a questo post del blog. Essa dovrebbe contribuire a chiarire il processo è necessario eseguire su come configurare il kernel.
http: / /www.kevinrohrbaugh.com/blog/2009/8/7/using-ninject-2-with-aspnet-mvc.html
Altri suggerimenti
Dal momento che si sta già estendendo un'altra classe HttpApplication-derivata, i miei pensieri sono per copiare il codice sorgente pertinente dal di classe NinjectHttpApplication nella tua classe HttpApplication estesa. Invece di tagliare e incollare, basta guardare la fonte per NinjectHttpApplication nel progetto di ampliamento Ninject2 Ninject.Web.Mvc qui .
Vorrei specificamente copiare la roba in Application_Start () Application_Stop () e metodi. Gli altri metodi per la registrazione dei controllori sono belle, ma è possibile registrare il controller tuttavia si desidera. Noterete nella Application_Start () , il kernel viene creato chiamando la funzione virtuale pura CreateKernel () - si può semplicemente creare il tuo linea kernel proprio lì. Inoltre, notare la presenza della proprietà Kernel sul NinjectHttpApplication di classe - mi piacerebbe copia che nella propria classe pure. Sembrerebbe l'intento qui è che la classe HttpApplication-derived serve efficacemente come KernelContainer.
Disclaimer: Non ho provato questo per vedere se funziona, anche se sarò breve. Ho usato Ninject 1.x in un progetto web e intendo l'aggiornamento a Ninject 2 nel prossimo futuro; tuttavia, probabilmente sarò in grado di derivare direttamente da NinjectHtppApplication. Buona fortuna!
Non essendo in grado di ricavare da NinjectHttpApplication non è un grosso problema. Non sta facendo troppo, è molto comodo però. Il suggerimento di Peter Meyer è la strada da percorrere. Basta controllare le href="http://github.com/enkari/ninject.web.mvc/blob/ac9e51a89465003dcfff5d5aacc2844f3a6ee9ca/src/Ninject.Web.Mvc/NinjectHttpApplication.cs" fonte qui . Si dovrà ereditare da IHaveKernel però.
È ancora necessario incollare il codice si ha così la gente può vedere dove si potrebbe essere andato storto.
Credo che questo codice deve essere inserito nel vostro Application_Start:
ControllerBuilder.Current.SetControllerFactory(typeof(NinjectControllerFactory));
KernelContainer.Kernel = new StandardKernel(
new AutoControllerModule(Assembly.GetExecutingAssembly();
);