我有一个实现Sharp体系结构的Asp.net C#MVC 3应用程序。几天来,我一直在努力让Quartz.net与温莎城堡建立良好的关系,但没有任何运气。据我所知,我已经正确设置了所有内容,但仍然存在问题。
在我的Global.cs文件中,创建容器并尝试注册石英作业:
var container = new WindsorContainer(new XmlInterpreter("quartz_jobs.xml"));
container.AddFacility("quartznet", new QuartzFacility());
在quartz_jobs.xml文件中,我有以下内容:
<?xml version="1.0" encoding="utf-8" ?>
<quartz xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0"
overwrite-existing-jobs="true">
<job>
<job-detail>
<name>DeleteLoansWithoutClientsJob</name>
<job-type>EasyOptions.Web.Mvc.Code.Jobs.DeleteLoansWithoutClientsJob, EasyOptions.Web.Mvc</job-type>
<durable>true</durable>
</job-detail>
<trigger>
<cron>
<name>DeleteLoansWithoutClientsJobTrigger</name>
<group>MyJobs</group>
<description>A description</description>
<job-name>DeleteLoansWithoutClientsJob</job-name>
<job-group>MyJobs</job-group>
<cron-expression>0 0/1 * * * ?</cron-expression>
</cron>
</trigger>
</job>
问题是,您将Windsor指向Quartz.NET配置文件。
有两种不同的配置:Windsor的和Quartz.NET的。Windsor现在通常使用代码进行配置(即fluent config),尽管它仍然支持XML配置。然而,Quartz.NET工具目前不支持代码配置,您必须使用Windsor的XML配置(至少在这方面,其他组件/工具仍然可以通过代码进行配置)。然后是Quartz.NET,通常通过外部Quartz_jobs.xml文件进行配置。
我建议使用Quartz.NET设施示例应用程序作为参考。特别是,以下是Windsor配置示例和Quartz.NET配置示例。
编辑:如果Quartz.NET说它在web应用程序中找不到Quartz_jobs.xml,则需要在配置路径中包括web根:"~/Quartz_jobs.xml"(而不是普通的"Quartz_works.xml")
我写了一篇关于如何将Quartz.NET与IoC容器集成的博客文章。我的示例代码使用Castle Windsor。
博客文章可以在这里找到:http://thecodesaysitall.blogspot.com/2012/02/integrate-quartznet-with-your-favourite.html