【发布时间】:2017-02-27 08:24:54
【问题描述】:
我已经在 .NET 中安排了一个 cron 作业,并且它托管在 IIS 中。在它触发的第一天(出于测试目的,我实际上是在触发此作业时发送邮件)。但是第二天它没有(我希望这每天递归......每 24 小时一次)请在下面找到代码。[![在此处输入图像描述][1]][1]
public class JobScheduler
{
public static void Start()
{
try
{
Logger.Error("-------------------------------------------Inside JobScheduler Start-------------------------------------------");
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<QualityGateSFDCActionJob>().Build();
ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger3", "group1").WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(11, 42)).ForJob(job).Build();
scheduler.ScheduleJob(job, trigger);
Logger.Error("-------------------------------------------Scheduler Started without Issues-------------------------------------------");
}
catch (Exception ex)
{
Logger.Error(ex.Message);
throw ex;
}
}
}
对此有一些好心的帮助。
ITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger3", "group1").WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(11, 42)).ForJob(job).Build();
我只想让这项工作在每天上午 11:42 运行。我将非常感谢您在这方面的任何帮助
应用程序基于 ASP.NET MVC 构建并托管在 IIS 上。我希望每天运行一个作业,这就是我选择 Cron Job 的原因(Windows 服务在我的生产服务器中超出了上下文/范围)
【问题讨论】:
-
我认为这与 IIS 有关,因为它会在一段时间后回收应用程序池,并且您的工作将不再触发。你为此使用静态类吗?长时间运行的任务不应该在IIS中多运行在外部服务左右
-
我同意 Jehof 的观点,可能与 IIS 回收有关。你什么时候调用这个 Start() 方法?它是否需要您手动执行某些操作,即。调用服务?
-
感谢 Jehof & CathalMF 的快速回复。是的,我们将调用服务(REST API)来发布数据。它应该每天发生
标签: c# quartz.net