2012-01-03 17 views
5

ho ottenuto Ninject MVC lavorare con Ninject WCF per farlo funzionare ho aggiunto due linee di metodo CreateKernelNinject MVC insieme con estensione WCF non funziona con InRequestScope

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

Le dipendenze sono iniettati, ma la Il metodo di eliminazione non viene chiamato, ho provato entrambi con InRequestScope e facendo il mio ambito Func restituisce OperationContext.Current come oggetto Scope, ma non si chiama dispose.

Aggiornamento 2012/09/05 Questa informazione è obsoleto, per MVC e WCF download dal Nuget Ninject.MV3 e Ninject.Extensions.WCF (3.x) il modello MVC Nuget aggiungerà un programma di avvio automatico Ninject NinjectWebCommon. cs e per aggiungere il supporto in una SVC per eddit Ninject XML SVC (Tasto destro del mouse/Vista markup) e aggiungere fabbrica = "Ninject.Extensions.Wcf.NinjectServiceHostFactory" al nodo XML

+2

Sono up-voto a questa domanda, perché mostra come usare Ninject per MVC e WCF, allo stesso tempo, che è davvero difficile trovare un buon esempio per . –

+0

Questa informazione è obsoleta, vedere la modifica – Anders

risposta

2

Non riesco a rispondere alla risposta di Remo perché sono uno stackoverflow n00b ma il problema con l'eccezione 'System.Runtime.CompilerServices.ExtensionAttribute' è che è stato spostato da System.Core in .net 4.0 a mscorlib in .net 4.5. Se installi .net 4.5 il problema scompare. Penso che qualcosa sia stato creato con .net 4.5 nel mix. https://github.com/ninject/Ninject.Web.Common/issues/3 Sembra che verrà risolto presto. Per quanto riguarda il problema di Wcf InRequestScope, Remo mi ha dato un aiuto oggi sui gruppi di google ... "aggiungi un nuovo modulo che deriva da" Ninject.GlobalKernelRegistrationModule "e caricalo nel kernel, che verrà corretto per la versione finale ".

vale a dire una cosa del genere ...

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

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

Grazie amico, ora dispone correttamente! – Anders

2

mi consiglia di utilizzare Ninject 3.0. 0-rc2 disponibile da Nuget. InRequestScope funziona sia per le richieste Web che per quelle WCF.

+1

Grazie, ho provato un nuovo progetto MVC3, scaricato Ninject.Web.Common ... Ho dovuto modificare OnePerRequestModule in OnePerRequestHttpModule nella classe NinjectWebCommon (Sbagliato nel modello di nuget?) Comunque, ora ho ottenuto " Impossibile caricare il tipo 'System.Runtime.CompilerServices.ExtensionAttribute' da assembly 'mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'. " – Anders

+0

Sembra che sia un conflitto tra Webactivator e Ninject .. funzionano entrambi bene standalone ma insieme ottengo sopra l'errore – Anders

+0

Il pacchetto funziona perfettamente per me utilizzando l'ultimo attivatore web. Questo deve essere un conflitto con qualche altro pacchetto/libreria. –

Problemi correlati