2011-08-02 12 views
34

Tiene un par de preguntas sobre la última versión (2.2.1.4) del ninject.Ninject InRequestScope falta

estaba tratando de enlazar un Linq2Sql DataContext a una aplicación concreta InRequestScope (en un proyecto de biblioteca de clases)

Bind<DataContext>().To<MoneywatchDataContext>() 

pero no pudo encontrar InRequestScope método

enter image description here

terminó haciendo esto,

Bind<DataContext>().To<MoneywatchDataContext>().InScope(ctx => HttpContext.Current) 

Sólo quería saber si:

  1. Si esto se comportará exactamente igual que el método InRequestScope.
  2. Que garantizará que cuando mi HTTContext.Current esté sometido a GC, también se desechará el DataCotext subyacente.

Respuesta

22

Lo más probable es que haga referencia a una versión no web de Ninject. Reemplácelo con la versión normal y tendrá el método de extensión InRequestScope.

45

InRequestScope está disponible como método de extensión en Ninject.Web.Common. Así que si se instala antes a través de Nuget (paquete Ninject) ahora puede ser que necesite instalar el paquete adicional Nuget Ninject.Web.Common

+0

Recuerde que es necesario instalar este paquete en el proyecto que se está configurando su clase de módulo. Tuve un problema con el que lo había instalado en el proyecto MVC, pero el módulo donde puse 'Bind <>(). To <>(). InRequestScope();' estaba en el proyecto Infrastucure. Me tomó un tiempo darme cuenta de eso. – fabriciorissetto

31
using Ninject.Web.Common; // that's most likely all you need 
+5

Esta es la respuesta real que me ayudó. –

+0

Funcionó para mí también. – orourkedd

+0

(esto importa el espacio de nombres que contiene el método de extensión) –

Cuestiones relacionadas