【发布时间】:2015-02-03 15:36:50
【问题描述】:
此功能的范围是网站集级别。激活该功能后,将在 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 文件,并启动服务后,激活的站点集合定时器作业完美执行。
但是,在不同的网站集上激活自定义计时器功能会导致该特定网站集的计时器作业未执行的相同初始问题。第一个计时器作业(清除缓存后)仍然可以正常工作。
由于某些用户可以控制可以打开/关闭功能,您可以看到这会让人们感到沮丧。制作新网站集时,必须激活该功能,但它不会运行,直到...清除缓存?我在这里错过了什么?
提前致谢。
【问题讨论】:
-
顺便说一句,事件接收器总是正常工作。
标签: c# sharepoint sharepoint-2010 sharepoint-2013 sharepoint-timer-job