如果我们设置offline.html,RAMJobStore中的预定作业/触发器是否会丢失

时间:2017-04-15 06:24:29

标签: asp.net asp.net-mvc quartz.net

目前,我计划每周安排发送电子邮件的时间表。 我希望触发器会在应用程序脱机时停止。然后在AppStart时重新安排。 阅读完文档后,仍然无法找到答案。 我尝试在本地机器上,看起来RAMJobStore继续运行,甚至应用程序都处于脱机状态。如何让应用程序离线时如何停止?

请与我分享一些想法或信息。感谢

1 个答案:

答案 0 :(得分:0)

经过多次尝试,我发现当app文件夹中的App_offline.htm时触发器会关闭。

我在代码下方设置,然后点击“开始”按钮以触发计划。 假设每30秒收到5封电子邮件。如果测试电子邮件无法发送,则假设将收到错误电子邮件。

收到第二封电子邮件后,我将App_offline.html粘贴到文件夹中。最后,我从未收到任何东西。当然,在我删除App_offline.htm之后也没有什么事情发生。谢谢!

p / s:代码就是这样,到目前为止还没有应用额外的Web.Config。

public ActionResult Start()
{
    IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
    scheduler.Start();

    IJobDetail job = JobBuilder.Create<Jobclass>().Build();
    ITrigger trigger = TriggerBuilder.Create()
        .WithIdentity("trigger1", "group1")
        .StartNow()
        .WithSimpleSchedule(x => x
        .WithIntervalInSeconds(30)
        .WithRepeatCount(4))
        .Build();

    scheduler.ScheduleJob(job, trigger);
    return RedirectToAction("Index");
}

public class Jobclass:IJob
{
    public void Execute(IJobExecutionContext context)
    {
        string sMailStatus = MyClass.mailTemplate("myEmail@gmail.com", "myEmail@gmail.com", 
                     "Testing Email - " + DateTime.Now.ToShortDateString(), "Testing");
            if (sMailStatus != "sent")
            {
                MyClass.mailTemplate("myEmail@gmail.com", "myEmail@gmail.com", 
                    "Error : Testing Email", sMailStatus);
            }
     }
}