Qualcuno sa di una buona guida per ottenere Ninject 2 di lavoro in ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/962690

  •  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?

È stato utile?

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();
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top