この機能は、サイト コレクション レベルで適用されます。機能がアクティブ化されると、タイマー ジョブが 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 ファイルを削除し、サービスを開始した後、アクティブ化されたサイト コレクション タイマー ジョブは完全に実行されました。
ただし、別のサイト コレクションでカスタム タイマー機能を有効にすると、その特定のサイト コレクションのタイマー ジョブが実行されないという同じ初期の問題が発生しました。最初のタイマー ジョブ (ポスト クリア キャッシュ) は引き続き正常に動作します。
特定のユーザーは機能のオン/オフを制御できるため、これが人々にとっていかにイライラするかがわかります。新しいサイト コレクションが作成されると、機能を有効にする必要がありますが、キャッシュがクリアされるまで実行されませんか? ここで何が欠けていますか?
前もって感謝します。