在定时器作业的sharepoint中引用Web /站点对象

时间:2014-01-30 07:36:15

标签: sharepoint sharepoint-2010 sharepoint-2013

从下面给出的示例中,哪个是在sharepoint中专门针对计时器作业引用当前站点/ web的最佳方法?为什么?

例1:

SPWebApplication webApp = this.Parent as SPWebApplication; SPWeb oWeb = webApp.Sites[0].RootWeb;

OR

示例2:

using(SPSite site=new SPSite(SPCOntext.Current.Web.Url)){ using(SPWeb web=site.OpenWeb()){

} }

1 个答案:

答案 0 :(得分:2)

TimerJob中没有可用的SPContext.Current,因此这不是一个选项。您的示例1将是一个选项,但我一直在使用其他解决方法。

当您按代码部署timerjob并使用特定的时间表激活它们时,您可以设置TimerJob属性,这些属性在调用“Execute”方法时可以读取。

以下是我在SPWebApplication功能中的一个解决方案中使用的代码:

var webApplication = (SPWebApplication) properties.Feature.Parent;
var newTimerJob = new new MyTimerJob("Timerjobname", webApplication);
newTimerJob.Properties.Add("key", "url");
newTimerJob.Schedule = schedule;
newTimerJob.Update();

执行方法可以包含这样的内容:

if (Properties["key"] != null && Properties["key"].ToString() != string.Empty)
        { var mySite = new SPSite(Properties["key"].ToString()); }