我在Sitecore中设置了许多计划任务。有些人每隔几个小时每隔15分钟跑一次。
示例配置:
<sitecore>
<scheduling>
<agent type="Acme.Tasks.SitemapProducts, AcmeSitecore" method="Run" interval="00:15:00" site="website">
<param desc="filename">~/products.xml</param>
<param desc="Site">website</param>
<param desc="HasVariants">false</param>
</agent>
</scheduling>
</sitecore>
这会运行一个每隔15分钟构建一个xml文件的任务,并且运行正常。但是,我现在想要阻止此任务在特定日期的特定时间之间运行。有没有办法让我通过配置添加这个?
答案 0 :(得分:4)
没有。没有办法只通过配置这样做。
您可以做的是将额外参数传递给计划任务并设置开始和结束时间。然后在您的计划任务代码中,检查当前时间是否在开始和结束时间之间。
作业将被执行,但不会生成新的xml。
<sitecore>
<scheduling>
<agent type="Acme.Tasks.SitemapProducts, AcmeSitecore" method="Run" interval="00:15:00" site="website">
<param desc="filename">~/products.xml</param>
<param desc="Site">website</param>
<param desc="HasVariants">false</param>
<StartTime>08:00</StartTime>
<Endtime>21:00</Endtime>
</agent>
</scheduling>
</sitecore>
代码应该是这样的(未经测试):
public class SitemapProducts
{
public string StartTime { get; set; }
public string EndTime { get; set; }
public void Run()
{
if (!string.IsNullOrEmpty(StartTime) && DateTime.Now.ToString("HH:mm") < StartTime)
{
return;
}
if (!string.IsNullOrEmpty(EndTime) && DateTime.Now.ToString("HH:mm") > EndTime)
{
return;
}
}