0

此功能的范围是网站集级别。激活该功能后,将在 Web 应用程序中创建计时器作业,其通用名称包括它应该在其中运行的网站集 URL。理论上,当在网站集中停用该功能时,它会停止在那里执行,但任何在其他网站集上激活的其他计时器作业功能仍将运行。

using Microsoft.SharePoint
using Microsoft.SharePoint.Administration

class DailyAlerts() : SPJobDefinition
{
   public DailyAlerts() : base() { }

   public DailyAlerts(string jobName, SPWebApplication webApp) : base(jobName, webApp, null, SPJobLockType.Job)
   {
      this.Title = jobName;
   }

   public override void Execute(Guid targetInstanceId)
   {
      // CHANGE THE SITE COLLECTION'S ROOT WEB SITE DESCRIPTION TO THE CURRENT TIME
   }
}

在部署解决方案并在一个网站集上激活它后,该作业从未执行任何自定义代码。这篇文章帮助解决了这个问题: http ://www.wahidsaleemi.com/2009/08/sharepoint-timer-jobs-not-running/ 。停止 SP 计时器服务器,删除缓存的 XML 文件,并启动服务后,已激活的站点收集计时器作业完美执行。

但是,在不同的网站集上激活自定义计时器功能会导致该特定网站集的计时器作业未执行的相同初始问题。第一个计时器作业(清除缓存后)仍然可以正常工作。

由于某些用户可以控制可以打开/关闭功能,因此您可以看到这会让人们感到沮丧。制作新的网站集时,必须激活该功能,但它不会运行,直到...清除缓存?我在这里想念什么?

提前致谢。

4

1 回答 1

1

该服务可以使用 powershell 重置,我的建议是对该功能进行描述,只是说该功能的全部功能要到第二天才能显现出来。

让您的功能在农场或网络应用程序级别更新属性包变量。

编写一个powershell脚本然后扫描变量,如果变量等于true,则运行脚本并通知某人重新启动。显然将变量重置回原来的样子。将此脚本绑定到其中一台 SP 服务器的任务调度程序,以便在夜间运行一次,远离任何备份和搜索作业。这意味着如果您需要手动启动它,您也可以通过任务调度程序来启动它!

这将意味着该过程是自动化的,但您只能在需要时强制计时器作业重新启动。

干杯特鲁兹

于 2015-02-05T10:09:37.233 回答