Quartz.net 安装程序引发错误:"onfiguration parser encountered <job>"



我有一个实现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

最新更新