Sitefinity CMS - 隔夜工作
Sitefinity CMS - Overnight jobs
嗨,
我们使用的是 sitefinity 7.3(最新版本)。根据其中一项要求,我们想创建一些通宵工作来执行以下操作:
- 发送一些警报(对于某些角色)。
- 解锁所有锁定的页面
我们有执行上述操作的代码。
现在的问题是我们想在晚上的某个时间做这件事,例如凌晨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" 格式。
嗨,
我们使用的是 sitefinity 7.3(最新版本)。根据其中一项要求,我们想创建一些通宵工作来执行以下操作:
- 发送一些警报(对于某些角色)。
- 解锁所有锁定的页面
我们有执行上述操作的代码。
现在的问题是我们想在晚上的某个时间做这件事,例如凌晨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" 格式。