0

この機能は、サイト コレクション レベルで適用されます。機能がアクティブ化されると、タイマー ジョブが Web アプリケーションで作成され、サイト コレクションの URL を含む一般名が付けられます。理論的には、サイト コレクションで機能を非アクティブ化すると、そこで実行が停止しますが、別のサイト コレクションでアクティブ化された他のタイマー ジョブ機能は引き続き実行されます。

using Microsoft.SharePoint
using Microsoft.SharePoint.Administration

class DailyAlerts() : SPJobDefinition
{
   public DailyAlerts() : base() { }

   public DailyAlerts(string jobName, SPWebApplication webApp) : base(jobName, webApp, null, SPJobLockType.Job)
   {
      this.Title = jobName;
   }

   public override void Execute(Guid targetInstanceId)
   {
      // CHANGE THE SITE COLLECTION'S ROOT WEB SITE DESCRIPTION TO THE CURRENT TIME
   }
}

ソリューションを展開し、1 つのサイト コレクションでアクティブ化した後、ジョブはカスタム コードを実行しませんでした。この記事は、http: //www.wahidsaleemi.com/2009/08/sharepoint-timer-jobs-not-running/の修正に役立ちました 。SP タイマー サーバーを停止し、キャッシュされた XML ファイルを削除し、サービスを開始した後、アクティブ化されたサイト コレクション タイマー ジョブは完全に実行されました。

ただし、別のサイト コレクションでカスタム タイマー機能を有効にすると、その特定のサイト コレクションのタイマー ジョブが実行されないという同じ初期の問題が発生しました。最初のタイマー ジョブ (ポスト クリア キャッシュ) は引き続き正常に動作します。

特定のユーザーは機能のオン/オフを制御できるため、これが人々にとっていかにイライラするかがわかります。新しいサイト コレクションが作成されると、機能を有効にする必要がありますが、キャッシュがクリアされるまで実行されませんか? ここで何が欠けていますか?

前もって感謝します。

4

1 に答える 1

1

サービスはpowershellでリセットできます。私が提案するのは、機能の説明を付けて、機能の完全な機能が翌日まで明らかにならないということです.

たとえば、ファームまたは Web アプリ レベルでプロパティ バッグ変数を更新する機能を取得します。

変数をスキャンするための PowerShell スクリプトを作成します。A 変数が true の場合はスクリプトを実行し、誰かに再起動を通知します。明らかに、変数を元の状態にリセットします。このスクリプトをいずれかの SP サーバーのタスク スケジューラに結び付けて、バックアップおよび検索ジョブから離れて夜間に 1 回実行します。これは、手動で開始する必要がある場合でも、タスク スケジューラを介して開始できることを意味します。

これは、プロセスが自動化されていることを意味しますが、必要に応じてタイマー ジョブを強制的に再起動するだけです。

乾杯のTruez

于 2015-02-05T10:09:37.233 に答える