Je suis en train d'utiliser Ninject 2.2.1.4, avec mon MVC3, je réussis à configurer Ninject avec, mais je ne sais pas comment faire fonctionner Ninject avec Quartz.Net dans mon MVC3. Quelqu'un peut-il m'aider?ASP.Net MVC 3, Ninject et Quartz.Net - Comment?
13
A
Répondre
20
Créer un JobFactory qui utilise Ninject
public class NinjectJobFactory : IJobFactory
{
private readonly Func<Type, IJob> jobFactory;
public NinjectJobFactory (Func<Type, IJob> jobFactory)
{
this.jobFactory = jobFactory;
}
public IJob NewJob(TriggerFiredBundle bundle)
{
return this.jobFactory(bundle.JobDetail.JobType);
}
}
et un QuarzSchedulerProvider
public class QuartzSchedulerProvider : Provider<IScheduler>
{
private readonly IJobFactory jobFactory;
private readonly IEnumerable<ISchedulerListener> listeners;
private readonly ISchedulerFactory schedulerFactory;
public QuartzSchedulerProvider(
ISchedulerFactory schedulerFactory,
IJobFactory jobFactory,
IEnumerable<ISchedulerListener> listeners)
{
this.jobFactory = jobFactory;
this.listeners = listeners;
this.schedulerFactory = schedulerFactory;
}
protected override IScheduler CreateInstance(IContext context)
{
var scheduler = this.schedulerFactory.GetScheduler();
scheduler.JobFactory = this.jobFactory;
foreach (var listener in this.listeners)
{
scheduler.AddSchedulerListener(listener);
}
return scheduler;
}
}
et un SchedulerFactoryProvider
public class QuartzSchedulerFactoryProvider : Provider<ISchedulerFactory>
{
protected override ISchedulerFactory CreateInstance(IContext context)
{
var properties = new NameValueCollection();
properties["quartz.dataSource.DataSource.connectionString"] = "Your connection string";
properties["quartz.dataSource.DataSource.provider"] = "Your provider";
properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz";
properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz ";
properties["quartz.jobStore.tablePrefix"] = "QRTZ_";
properties["quartz.jobStore.dataSource"] = "DataSource";
properties["quartz.jobStore.useProperties"] = "true";
return new StdSchedulerFactory(properties);
}
}
et configurer
Bind<IJobFactory>().To<NinjectJobFactory>();
Bind<ISchedulerFactory>().ToProvider<QuartzSchedulerFactoryProvider>();
Bind<IScheduler>().ToProvider<QuartzSchedulerProvider>().InSingletonScope();
Bind<Func<Type, IJob>>().ToMethod(ctx => t => (IJob)ctx.Kernel.Get(t));
Si vous avez besoin de ISchedulerListener, par ex. pour la journalisation les lier ici aussi.
Injectez une instance de IScheduler dans laquelle vous souhaitez ajouter des tâches et vous devrez très probablement également injecter des propriétés d'une instance dans global.asax. Mais notez que je n'ai pas encore utilisé Quarz dans le contexte MVC car je pense que les tâches planifiées n'appartiennent pas à une application Web, mais plutôt à un service fonctionnant sur le même serveur.
Questions connexes
- 1. MVC 3 avec Quartz.Net
- 2. Quartz.NET avec Ninject
- 3. ASP.NET MVC 3 Prévisualiser configurer pour ninject
- 4. Quartz.net Schéma dans MVC 3
- 5. ASP.NET MVC 3 Ninject Membres personnalisés et fournisseur de rôle
- 6. MVC 3 CookieTempDataProvider et Ninject IOC
- 7. Asp.net Mvc: Ninject - IPrincipal
- 8. ASP.NET MVC et Ninject 2.0 Binding Question
- 9. Ninject + ASP.NET MVC + InRequestScope
- 10. ASP.NET MVC + Ninject: InRequestScope
- 11. Quartz.net et Ninject: comment lier l'implémentation à mon travail en utilisant NInject
- 12. Problèmes d'injection de Ninject dans ASP.NET MVC 3
- 13. DbContext ASP.Net et Quartz.net
- 14. MVC 3 ninject lier paresseux évalué paramètre
- 15. Ninject et asp.net MVC4
- 16. Échafaudages Ninject et MVC
- 17. MVC 3 injecter des contrôleurs avec Ninject
- 18. ASP.NET MVC 3 et AJAX
- 19. Ninject, ASP.NET et contrôles personnalisés
- 20. ASP.NET MVC 3 et Wordpress
- 21. ASP.NET MVC - Erreur d'activation de Ninject 2.0
- 22. Ninject 2 et MVC 2.0
- 23. Aide Ninject en asp.net mvc 2
- 24. ASP.NET MVC 2, Ninject et l'hébergement de confiance partielle
- 25. ASP.NET MVC 3 et l'injection de filtre global
- 26. Erreurs Ninject Asp.net mvc 2 404?
- 27. Ninject - Asp.net Mvc: Plusieurs projets en solution
- 28. MVC Base Controller et Ninject
- 29. Création d'un programme d'amorçage dans ASP.NET MVC 3 à l'aide de Ninject et DependencyResolver
- 30. Mono, ASP.NET MVC 3, Ninject et un constructeur par défaut requis
Merci beaucoup Remo :), laissez-moi l'essayer –
@Remo: devrait this.ResolutionRoot près du top être this.kernel ou aviez-vous l'intention de renommer la var? (ou est quelque chose ResolutionRoot dans IJobFactory?) –
Oui, vous avez raison. Je n'ai pas renommé tout quand je l'ai copié de ma solution. J'utilise normalement IResolutionRoot au lieu de IKernel. –