Sitefinity CMS - 隔夜工作

时间:2015-02-09 16:39:26

标签: sitefinity

您好,

我们正在使用sitefinity 7.3(最新版本)。根据其中一项要求,我们希望创建一些隔夜工作来执行以下操作:

  1. 发送一些提醒(对于某些角色)。
  2. 解锁所有锁定的页面
  3. 我们有代码执行上述操作。

    现在问题是我们希望在晚上的某个时间进行,例如凌晨3点。我们应该如何在sitefinity框中安排这个?

    有些服务吗?如果是,那么任何步骤来实现这一目标?

    注意:如果需要进一步澄清,请告诉我。 干杯

3 个答案:

答案 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”格式。