Recientemente, he actualizado uno de mis proyectos de MvC3 Ninject 2 a 3. NinjectNinject 3 InRequestScope no devolver la misma instancia de la misma petición
Después de un par de minutos tratando de encontrar qué InRequestScope ya no estaba disponible, Descubrí que ahora es una extensión de Ninject.Web.Common.
Ahora, cuando intento ejecutar la aplicación, Ninject funciona como si todos los tipos combinados con un alcance InRequest fueran InTransientScope; una nueva instancia fue creada cada vez.
En mi clase que hereda de NinjectModule, tengo un enlace simple como eso:
Bind<ViewModel.Activity>().ToSelf().InRequestScope();
En mi controlador, tengo 2 inmuebles de la ViewModel.Activity tipo marcado con el atributo de Ninject.
[Inject]
public ViewModel.Activity Activity { get; set; }
[Inject]
public ViewModel.Activity Activity1 { get; set; }
Si miraba en modo de depuración del valor de la HashCode tanto de las dos propiedades, no todos tienen valor diferente pero HttpContext es la misma; Estoy en la misma solicitud.
¿Qué me perdí sobre cómo usar correctamente el nuevo Ninject.Web.Common.InRequestScope con la nueva versión de Ninject 3?
Muchas gracias.
¿Cómo enlazas Ninject en tu código? ¿Estás usando Ninject.MVC3 desde nuget, y luego editando el archivo NinjectWebCommon.cs? o estás haciendo una fábrica de controlador personalizado? –
Una fábrica personalizada – Samuel
@MystereMan Muchas gracias. Esto es exactamente lo que quiero. Usé NuGet para encontrar Ninject MVC3 y simplemente agregué lo que dijiste en NinjectWebCommon para el enlace de mis dependencias y funciona. Creo que la clave de por qué este trabajo es debido a estas líneas: DynamicModuleUtility.RegisterModule (typeof (OnePerRequestHttpModule)); y DynamicModuleUtility.RegisterModule (typeof (NinjectHttpModule)); OnePerRequestHttpModule también eliminará toda mi unidad de trabajo inmediatamente después de cada solicitud. ¡Muchas gracias! – Samuel