所以我正在使用SPJobDefinition为sharepoint开发自定义计时器作业。
此作业通过功能接收器激活。
据我了解,SPJobDefinition在网络应用程序上运行。
如果功能范围是基于站点或基于Web的,是否有任何代码可以确定在客户作业中通过哪个站点激活该功能?
为了更清楚地了解我想要实现的目标,作业本身就是一个自定义的“警报我”通知工作。我想做的是,能够确定哪些网站已激活此功能,以确定要订阅警报通知的网站。
但我不知道如何确定哪些网站已激活此功能。
任何帮助都非常感激。
答案 0 :(得分:2)
以下是我过去常用的代码:
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,表示功能接收者创建作业计划的功能(如果它尚不存在)。