asp.net-mvc-3 – ASP.Net MVC 3,Ninject和Quartz.Net – 如何?
发布时间:2020-05-24 05:25:46 所属栏目:asp.Net 来源:互联网
导读:我现在正在使用Ninject 2.2.1.4,与我的MVC3,我成功配置Ninject运行它,但我不知道如何使Ninject运行在Quartz.Net在我的MVC3 谁能帮忙? 创建一个使用Ninject的JobFactory public class NinjectJobFactory : IJobFactory{ private readonly FuncType, IJob j
|
我现在正在使用Ninject 2.2.1.4,与我的MVC3,我成功配置Ninject运行它,但我不知道如何使Ninject运行在Quartz.Net在我的MVC3
解决方法创建一个使用Ninject的JobFactorypublic 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);
}
}
和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;
}
}
和一个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);
}
}
并配置 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)); 如果你需要一些ISchedulerListener,例如用于日志记录也绑定在这里. 注入IScheduler的一个实例,您想要添加作业,最有可能您必须将实例的属性注入到global.asax中.但是请注意,我没有在MVC上下文中使用Quarz,而我认为计划任务不属于Web应用程序,而是属于在同一服务器上运行的服务. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何在IIS 7.5中配置应用程序池在停止时自动重新
- asp.net – 重写规则错误:HTTP错误500.50 – URL重写模块错
- asp.net-mvc – 将会话永久保持为stackoverflow
- asp.net-mvc – Html.BeginForm()和ajax.beginform()之间的
- asp.net-mvc – ASP.NET MVC – 为基本控制器中的母版页设置
- asp.net-mvc – ASP.Net MVC4根cshtml和“不继承’System.W
- asp.net-mvc – ASP MVC3在actionlink中插入html标签
- asp.net-mvc – 如何在MVC Filter属性中解析依赖注入
- asp.net – 将url参数添加到asp主题文件夹中的css文件中
- asp.net中利用Jquery+Ajax+Json实现无刷新分页的实例代码
推荐文章
站长推荐
热点阅读
