首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xml服务不能通过Quarz.net配置文件对作业进行编码

xml服务不能通过Quarz.net配置文件对作业进行编码
EN

Stack Overflow用户
提问于 2022-02-14 17:09:20
回答 1查看 83关注 0票数 1

我有一个windows服务,它(至少用来)从xml配置文件中创建作业。但是我不能让它起作用。

这是我的xml (jobs.config)

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
<schedule>
  <job>
        <name>FirstJob</name>
        <group>DummyGroup</group>
        <description>This is FirstJob</description>
        <job-type>Test.TestJob, Test</job-type>
   </job>
  <trigger>
      <simple>
          <name>nativeJobExampleSimpleTrigger</name>
           <group>nativeJobExampleSimpleTriggerGroup</group>
            <description>Simple trigger to simply fire sample job</description>
            <job-name>FirstJob</job-name>
            <job-group>DummyGroup</job-group>
            <misfire-instruction>SmartPolicy</misfire-instruction>
            <repeat-count>5</repeat-count>
            <repeat-interval>5000</repeat-interval>
      </simple>
    </trigger>
</schedule>

这就是创造我工作的密码。

代码语言:javascript
复制
var jobs = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "jobs.config");
            
var properties = new NameValueCollection
                 {
                   ["quartz.scheduler.instanceName"] = "XmlConfiguredInstance",
                   ["quartz.threadPool.threadCount"] = "5",
                   ["quartz.threadPool.threadPriority"] = "Normal",
                   ["quartz.plugin.xml.type"] = "Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz",
                   ["quartz.plugin.xml.fileNames"] = jobs
                 };

var sf = new StdSchedulerFactory(properties);
sched = sf.GetScheduler();
sched.Start();

var jgn = sched.GetJobGroupNames();
var count = jgn.Count;

无论我如何尝试,count的值总是为零,而且我的工作没有开始。配置文件的路径是正确的(我尝试将文件重命名为1jobs.config,并得到“”)。

我从文档中尝试了几个配置和代码示例,结果是一样的。将属性移动到myservice.exe.config也不会改变任何事情。Jobs.config为每个人读取了访问权限。

然而,如果我在WinForms应用程序中尝试相同的代码和相同的配置,它的工作方式就像它应该做的那样。

EN

回答 1

Stack Overflow用户

发布于 2022-02-16 21:54:58

在windows服务中,Assembly.GetExecutingAssembly().Location可能返回类似于C:\Windows\system...的内容。

要么试试

代码语言:javascript
复制
var jobs = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "jobs.config");

或者更好的尝试

代码语言:javascript
复制
               ["quartz.plugin.xml.fileNames"] = "~/jobs.config"

Quartz.NET 3.0正确地处理~,也许2.0也是如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71115614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档