在Sharepoint中的spjobDefinition中调用SPsite的正确方法

时间:2011-11-15 22:39:36

标签: sharepoint-2010

在Sharepoint JobDefinition的execute方法中获取SPSite的最佳方法是什么?

我正在使用下一个代码:

SPServer ms = SPServer.Local;
SPSite msite = new SPSite(server);

但是当它在Sharepoint Farm中实现时它不起作用......如果我尝试

SPSite msite = SPContext.Current.Site;

它不起作用,因为在Job的执行中不存在SPContext ...

任何想法?。

...谢谢!

1 个答案:

答案 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类型。