Sitefinity CMS - 隔夜工作

Sitefinity CMS - Overnight jobs

嗨,

我们使用的是 sitefinity 7.3(最新版本)。根据其中一项要求,我们想创建一些通宵工作来执行以下操作:

  1. 发送一些警报(对于某些角色)。
  2. 解锁所有锁定的页面

我们有执行上述操作的代码。

现在的问题是我们想在晚上的某个时间做这件事,例如凌晨3点。我们应该如何在 sitefinity 框内安排它?

一些服务?如果是,那么有什么步骤可以实现吗?

注意:如果需要更多说明,请告诉我。 干杯

这会创建一个计划任务,每 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

如果您只想在负载平衡环境中 运行 任务一次,您还可以在执行之前检查任务是否已经 运行ning。当一个网络服务器启动任务并将任务状态更改为 'running' 时,一些额外的逻辑(IF state == 'running' THEN 什么都不做)可以防止再次启动相同的任务。这样每台服务器都可以启动作业,所以当分配的服务器意外离线时,这也可以工作。

您可以使用下面的代码。

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" 格式。