因此,我正在使用SPJobDefinition为sharepoint开发一个自定义计时器作业。
据我所知,SPJobDefinition在web应用程序上运行。
如果功能范围是基于站点或web的,是否有任何方法可以根据代码确定在客户作业中通过哪个站点激活功能?
但我不知道如何确定哪些网站激活了这个功能。
非常感谢您的帮助。
下面是我用来做你所描述的事情的代码:
public override void Execute(Guid targetInstanceId) { foreach (SPSite site in this.WebApplication.Sites) { try { if (SPSite.Exists(new Uri(site.Url)) && null != site.Features[FeatureId.AlertMeJob]) { try { ExecuteJob(site); } catch (Exception ex) { // handle exception } } } finally { site.Dispose(); } } }
FeatureId.AlertMeJob是一个GUID,表示具有创建作业计划的功能接收器的功能(如果它不存在的话)。