Possiedo un'applicazione MVC 5 che utilizza Ninject e aggiungo Hangfire ad esso.Configurazione Hangfire e configurazione Ninject
Quando ho aggiunto Ninject, ho utilizzato il pacchetto nuget NinjectWebCommon
per la sua semplicità nella configurazione. Quindi per ora Ninject è configurato attraverso la classe NinjectWebCommon
che crea un kernel standard e aggiunge i binding.
Inoltre ho creato qualche modulo personalizzato che si carica durante la creazione del kernel
private static IKernel CreateKernel() {
var kernel = new StandardKernel(new MyCustomModule());
try {
kernel.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
catch {
kernel.Dispose();
throw;
}
}
Il Ninject Web Common è registrato attraverso la classe WebActivatorEx
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyProject.Web.NinjectWebCommon), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(MyProject.Web.NinjectWebCommon), "Stop")]
Ora il problema è legato su come rendere Hangfire per vedere la configurazione di Ninject. Osservando il pacchetto Hangfire.Ninject
posso leggere
Il pacchetto fornisce un metodo di estensione per IGlobalConfiguration interfaccia :
var kernel = new StandardKernel();
GlobalConfiguration.Configuration.UseNinjectActivator(kernel);
Ora la mia domanda sono:
- A causa dell'interfaccia
IGlobalConfiguration
, I aggiungere la configurazione di Hangfire Ninject all'interno del metodo di avvio di OWIN (dove è già posizionata la configurazione di Hangfire). Come dovrei ottenere la corrente Ninject kernel (quella che NinjectWebCommon ha configurato? - cosa circa l'ordine di esecuzione? È il
WebActivatorEx
esecuzione prima o dopo l'avvio OWIN? - Che cosa accade se provo ad eseguire la configurazione due volte ?
Più in generale, come posso condividere la configurazione Ninject tra i due?
Modifica: suggerimento di proprietà personalizzate sostituito con un suggerimento basato su Bootstrapper migliore e aggiunto un po 'alle radici di composizione. – CrazyPyro