当前位置:  开发笔记 > 后端 > 正文

Quartz.NET触发器没有触发

如何解决《Quartz.NET触发器没有触发》经验,为你挑选了1个好方法。

我在ASP.NET Web应用程序中使用Quartz.NET.我将以下代码放在按钮单击处理程序中以确保它执行(用于测试目的):

Quartz.ISchedulerFactory factory = new Quartz.Impl.StdSchedulerFactory();
Quartz.IScheduler scheduler = factory.GetScheduler();
Quartz.JobDetail job = new Quartz.JobDetail("job", null, typeof(BackupJob));
Quartz.Trigger trigger = Quartz.TriggerUtils.MakeDailyTrigger(8, 30); // i edit this each time before compilation (for testing purposes)
trigger.StartTimeUtc = Quartz.TriggerUtils.GetEvenSecondDate(DateTime.UtcNow);
trigger.Name = "trigger";
scheduler.ScheduleJob(job, trigger);
scheduler.Start();

这是"BackupJob":

public class BackupJob : IJob
{
    public BackupJob()
    {
    }

    public void Execute(JobExecutionContext context)
    {
        NSG.BackupJobStart();
    }
}

我的问题:为什么"BackupJobStart()"没有解雇?我之前使用过类似的代码,但它运行良好.

编辑:@Andy White,我想在Global.asax的Application_Start中使用它.这不起作用,这就是为什么我把它移动到一个按钮点击处理程序来缩小问题的范围.



1> Andy White..:

你有连接Quartz.NET日志吗?我曾经遇到过一个没有执行的工作的问题(我忘记了原因),但是一旦我进行了Quartz.NET日志记录,问题就显而易见了.

值得一试(如果你还没有这样做):

https://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html

http://netcommon.sourceforge.net/

http://netcommon.sourceforge.net/documentation.html

更新:只需将其添加到program.cs以启用控制台日志记录:

Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter { Level = Common.Logging.LogLevel.Info};


这帮助我找到了问题,我的问题是我的工作正在执行的类没有默认的(无参数的)公共构造函数。
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有