¿Alguien sabe de una buena guía para obtener Ninject 2 de trabajo en ASP.NET MVC?

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

  •  12-09-2019
  •  | 
  •  

Pregunta

Estoy luchando con la documentación para averiguar exactamente lo que necesito. La documentación (a mi entender) es de 1,5 de todos modos.

N.B: no quiero extender NinjectHttpApplication

He configurado para utilizar el NinejctControllerFactory en Application_Start () pero me da una excepción de referencia nula en la KernelContainer.Kernel cuando se trata de crear un controlador. ¿Dónde puedo configurar el kernel si no extiendo NinjectHttpApplication?

¿Fue útil?

Solución

Tome un vistazo a esta entrada del blog. Se espera que ayude a aclarar el proceso que debe realizar sobre cómo configurar el kernel.

http: / /www.kevinrohrbaugh.com/blog/2009/8/7/using-ninject-2-with-aspnet-mvc.html

Otros consejos

Dado que ya está extendiendo otra clase HttpApplication de origen, mis pensamientos son simplemente copiar el código fuente relevante de la clase NinjectHttpApplication en su clase HttpApplication extendida. En lugar de cortar y pegar, basta con ver el fuente de NinjectHttpApplication en el proyecto de extensión Ninject2 Ninject.Web.Mvc aquí .

Me copiar específicamente la materia en Application_Start () y Application_Stop () métodos. Los otros métodos para registrar los controladores están muy bien, pero se pueden registrar sus controladores como desee. Se le nota en el Application_Start () , el núcleo se crea llamando a la función virtual pura CreateKernel () - simplemente puede crear su línea kernel allí mismo. Además, tenga en cuenta la presencia de la propiedad del núcleo en el NinjectHttpApplication clase - Me copia que en su propia clase también. Al parecer, la intención aquí es que la clase HttpApplication derivado sirve eficazmente como la KernelContainer.

Renuncia: No he probado esto para ver si funciona, aunque voy a ser breve. He usado Ninject 1.x en un proyecto web y la intención de actualizar a Ninject 2 en un futuro próximo; Sin embargo, probablemente seré capaz de derivar directamente de NinjectHtppApplication. Buena suerte!

No ser capaz de derivar de NinjectHttpApplication no es un gran problema. No está haciendo demasiado, que es muy conveniente sin embargo. La sugerencia de Pedro Meyer es el camino a seguir. Sólo echa un vistazo a los href="http://github.com/enkari/ninject.web.mvc/blob/ac9e51a89465003dcfff5d5aacc2844f3a6ee9ca/src/Ninject.Web.Mvc/NinjectHttpApplication.cs" fuente aquí . Usted tendrá que heredar de IHaveKernel sin embargo.

Aún debe pegar el código que tiene que la gente pueda ver dónde podría haber ido mal.

Creo que este código debe ser colocado en su Application_Start:

ControllerBuilder.Current.SetControllerFactory(typeof(NinjectControllerFactory));
KernelContainer.Kernel = new StandardKernel(
    new AutoControllerModule(Assembly.GetExecutingAssembly();
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top