我在.NET中安排了一个cron Job,同样在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服务在我的生产服务器中超出了上下文/范围)
答案 0 :(得分:4)
IIS有一个名为&#34; Recycling&#34;的功能。这基本上重新加载了IIS中的所有内容。
如果您在IIS管理器中进入应用程序池的高级设置,则会有一个回收间隔,默认情况下为1740分钟(29小时)
当IIS Recycles时,您的应用程序在调用Web服务之前不会开始运行。因此,每29小时就会回收一次,因此,根据您启动Web服务的时间,它将运行您的Cron作业一次或两次,但从不第三次,除非您在循环后调用您的Web服务重新启动它。
基本上,IIS不是托管需要始终运行作业的应用程序的好地方。