2012-01-03 15 views
5

he conseguido Ninject MVC para trabajar con Ninject WCF para conseguir que funcione añadí dos líneas al método CreateKernelNinject MVC junto con la extensión WCF no funciona con InRequestScope

kernel.Bind<ServiceHost>().To<NinjectServiceHost>(); 
KernelContainer.Kernel = kernel; 

se inyectan las dependencias, pero el El método de descartar no se invoca, lo he intentado tanto con InRequestScope como con mi propio ámbito. Func devuelve OperationContext.Current como objeto Scope, pero no se llama al disposer.

actualización 09/05/2012 Esta información es obsoleta, para MVC y WCF descarga desde Nuget Ninject.MV3 y Ninject.Extensions.WCF (3.x) la plantilla MVC Nuget añadirá un programa previo Ninject NinjectWebCommon. cs y para añadir soporte en un SVC para eddit ninject el xml SVC (Haga clic derecho/Vista marcado) y añadir fábrica = "Ninject.Extensions.Wcf.NinjectServiceHostFactory" al nodo XML

+2

me levanto a voto a esta pregunta, ya que muestra cómo utilizar ninject para MVC y WCF, al mismo tiempo, lo que es muy difícil encontrar un buen ejemplo para . –

+0

Esta información es obsoleta, ver edición – Anders

Respuesta

2

No puedo responder a la respuesta de Remo porque soy un stackoverflow n00b pero el problema con la excepción 'System.Runtime.CompilerServices.ExtensionAttribute' es que se ha movido de System.Core en .net 4.0 a mscorlib en .net 4.5. Si instala .net 4.5, el problema desaparece. Creo que algo se creó con .net 4.5 en la mezcla. https://github.com/ninject/Ninject.Web.Common/issues/3 Parece que se solucionará pronto. En cuanto al problema de Wcf InRequestScope Remo me brindó algo de ayuda hoy en los grupos de google ... "agregue un nuevo módulo que se deriva de" Ninject.GlobalKernelRegistrationModule "y cárguelo en el núcleo. Esto se solucionará para la versión final aunque "

es decir, algo así como ...

public class MyModule : Ninject.GlobalKernelRegistrationModule<WcfRequestScopeCleanup> 
{ 
} 

//And where you load your modules... 
kernel.Load<MyModule>(); 
+0

Gracias hombre, ahora se deshace correctamente! – Anders

2

recomiendo el uso de Ninject 3.0. 0-rc2 disponible de Nuget. InRequestScope funciona para solicitudes Web y WCF de lado.

+1

Gracias, probé en un nuevo proyecto MVC3, descargué Ninject.Web.Common ... Tuve que cambiar OnePerRequestModule a OnePerRequestHttpModule en la clase NinjectWebCommon (¿Incorrecta en la plantilla nuget?) De todos modos, ahora me sale " No se pudo cargar el tipo 'System.Runtime.CompilerServices.ExtensionAttribute' del ensamblado 'mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'. " – Anders

+0

Parece que es un conflicto entre Webactivator y Ninject .. ambos funcionan bien independiente, pero juntos me sale el error – Anders

+0

El paquete funciona perfectamente para mí con el último activador web. Esto debe ser un conflicto con algún otro paquete/biblioteca. –

Cuestiones relacionadas