标记档案: 计时器作业

计时器作业 FeatureActivated 和功能范围

我一直用某人交给我的计时器作业的一些代码。  他没有提供实际功能激活代码,所以我不得不把它写, 答案是肯定的。  我利用了 安德鲁 Connell 著名博客张贴内容 关于这个问题.

我使用的 Visual Studio 2010 和部署不断失败并出现错误"错误部署步骤中发生 '添加解决方案': 对象引用不设置到对象的实例。

我正在他的代码太夸张了。  我范围要 web 应用程序级别的特征, 如图所示:

image

结果, 发送到接收方的属性是从 web 应用程序, 不是一个网站的集合。  在结束, 代码看起来像这样:

公共覆盖 void FeatureActivated(SPFeatureReceiverProperties 属性)
{

    // 不做以下使用的 web 应用程序作用域功能, 它导致绝望 微笑
    // 网站中的 SPSite = 属性。作为中的 SPSite Feature.Parent;

    SPWebApplication wa = 属性。作为 SPWebApplication Feature.Parent;

    如果 (wa = = null) 引发新异常("webapp2 是空的"。);

    foreach (SPJobDefinition 在华工作。JobDefinitions)
    {

        请尝试
        {
            如果 (作业。名称 = = List_JOB_NAME)

                作业。删除();
        }
        赶上 (异常 e)
        {
            引发新异常("标记 2");
        } // 捕获异常 e
    }

    // 安装作业

    WeatherForecastTimerJob weatherForecastTimerJob =
        新 WeatherForecastTimerJob(List_JOB_NAME, wa);

    SPMinuteSchedule 附表 = 新 SPMinuteSchedule();
    附表。BeginSecond = 0;
    附表。EndSecond = 59;
    附表。间隔 = 5;
    weatherForecastTimerJob.Schedule = 附表;
    weatherForecastTimerJob.Update();

}

外卖的关键是,当该功能作用范围是一个 web 应用程序, SharePoint 传递给您功能接收机的 SPFeatureReceiverProperties 具有 web 应用程序级别的参数。  安德鲁的旧博客条目假定它应用范围限定为网站集.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin