.NET 中的 Cron 作业 (Quartz.NET) 不会每天触发
Cron Job (Quartz.NET) in .NET is not triggering daily
我已经在 .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 服务在我的生产服务器中 context/scope)
IIS 有一个名为 "Recycling" 的功能。这基本上会重新加载 IIS 中的所有内容。
如果您在 IIS 管理器中进入应用程序池的高级设置,则有一个回收间隔,默认情况下为 1740 分钟(29 小时)
当 IIS 回收时,您的应用程序将不会开始 运行ning 直到有东西调用网络服务。因此,它每 29 小时会回收一次,因此根据您启动 web 服务的时间,它将 运行 您的 Cron 作业一次或两次,但绝不会第三次,除非您在回收后调用您的 web 服务以重新启动它。
基本上,IIS 不是托管需要始终 运行ning 作业的应用程序的好地方。
我已经在 .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 服务在我的生产服务器中 context/scope)
IIS 有一个名为 "Recycling" 的功能。这基本上会重新加载 IIS 中的所有内容。
如果您在 IIS 管理器中进入应用程序池的高级设置,则有一个回收间隔,默认情况下为 1740 分钟(29 小时)
当 IIS 回收时,您的应用程序将不会开始 运行ning 直到有东西调用网络服务。因此,它每 29 小时会回收一次,因此根据您启动 web 服务的时间,它将 运行 您的 Cron 作业一次或两次,但绝不会第三次,除非您在回收后调用您的 web 服务以重新启动它。
基本上,IIS 不是托管需要始终 运行ning 作业的应用程序的好地方。