在Sharepoint JobDefinition的execute方法中获取SPSite的最佳方法是什么?
我正在使用下一个代码:
SPServer ms = SPServer.Local;
SPSite msite = new SPSite(server);
但是当它在Sharepoint Farm中实现时它不起作用......如果我尝试
SPSite msite = SPContext.Current.Site;
它不起作用,因为在Job的执行中不存在SPContext ...
任何想法?。
...谢谢!
答案 0 :(得分:3)
SPFarm farm = SPFarm.Local;
SPWebService webService = farm.Services.GetValue<SPWebService>("");
SPWebApplication webApplication = webService.WebApplications["Web Application name"];
foreach (SPSite site in webApplication.Sites)
{
// ...
}
对于Web Application-Scoped timer jobs,您还可以使用SPJobDefinition.Parent
属性并将其转换为SPWebApplication
类型。