タイマー ジョブの FeatureActivated とフィーチャーのスコープ

いくつかのコードを誰かが私にタイマー ジョブを手渡したと取り組んできました。  それを書く彼は実際の機能の活性化のコードを提供していなかった, もちろんです。  利用をしました。 アンドリュー ・ コネルの有名なブログの記事 件名に.

Visual Studio を使用してください。 2010 展開は、「配置手順 'ソリューションの追加' でエラーが発生エラーで失敗していたと: オブジェクト参照オブジェクトのインスタンスに設定できません。"

文字通り彼のコードを取っていた。  Web アプリケーション レベルの機能をスコーピングされました。, 示すように:

image

その結果, 受信機に送信されるプロパティは、web アプリケーションからです。, サイト コレクションではなく。  最後に, コードは次のようになります:

パブリック オーバーライド void FeatureActivated(SPFeatureReceiverProperties プロパティ)
{

    // 次のように web アプリケーション スコープ機能しません。, 絶望につながる スマイル
    // SPSite サイト プロパティを =。SPSite として Feature.Parent;

    SPWebApplication wa = プロパティ。SPWebApplication として Feature.Parent;

    場合 (wa = = null) 新しい例外をスローします。(「webapp2 null です。);

    foreach (Wa 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

メッセージを残してください

あなたのメールアドレスが公開されることはありません. 必須フィールドは、マークされています *