您好,
我们正在使用sitefinity 7.3(最新版本)。根据其中一项要求,我们希望创建一些隔夜工作来执行以下操作:
我们有代码执行上述操作。
现在问题是我们希望在晚上的某个时间进行,例如凌晨3点。我们应该如何在sitefinity框中安排这个?
有些服务吗?如果是,那么任何步骤来实现这一目标?
注意:如果需要进一步澄清,请告诉我。 干杯
答案 0 :(得分:1)
这会创建一个每5分钟运行一次的计划任务。
https://github.com/jonathanread/Aptera.Azure.LoadBalancing
SchedulingManager schedulingManager = SchedulingManager.GetManager();
var newTask = new LoadBalanceTask()
{
Key = this.Key,
ExecuteTime = DateTime.UtcNow.AddMinutes(5)
};
schedulingManager.AddTask(newTask);
schedulingManager.SaveChanges();
您可以使用计划管理器来创建计划事件。这是sitefinity文档: http://docs.sitefinity.com/tutorial-schedule-a-task-to-import-pop3-content
答案 1 :(得分:0)
如果要在负载平衡环境中仅运行一次任务,还可以在执行任务之前检查任务是否已在运行。当一个Web服务器启动任务并将任务状态更改为“正在运行”时,一些额外的逻辑(IF状态=='正在运行'那么什么都不做)可以防止再次启动相同的任务。通过这种方式,每个服务器都可以启动作业,因此当分配的服务器意外脱机时,这也可以正常工作。
答案 2 :(得分:0)
您可以使用以下代码。
var schedulingManager = SchedulingManager.GetManager();
schedulingManager.Provider.SuppressSecurityChecks = true;
var currentTask = schedulingManager.GetTaskData().Where(i => i.Key == sampleKey);
foreach (var task in currentTask)
{
schedulingManager.DeleteTaskData(task);
}
var newTask = new LoadBalanceTask
{
Key = sampleKey,
ExecuteTime = timeRun,
IsRecurring = true
};
schedulingManager.AddTask(newTask);
schedulingManager.SaveChanges();
注意:Sitefinity Schedule将使用“UTC”格式。