2012-08-14 26 views
5

サイトコレクション内の特定の場所に構成リストが存在する必要があるSharePointタイマージョブがあります。そのリストが存在しない場合は、そのリストを作成して(もちろん、そのリストに入力して)、rerun the jobを作成できるようにする必要があります。SharePointタイマージョブからステータスを報告する方法

以下のコードを使用してイベントログに書き込むことができますが、失敗したジョブの状態を示すために例外をスローすることができますが、私がやりたいことは、 ULSを見たり、イベントログにアクセスしたりする必要はありません。これまで見つかった投稿はlike this onethis oneにはあまり詳細がありません。

2つの質問: 1)タイマージョブ例外の失敗メッセージを提供する方法はありますか? 2)Exception()よりも投げる方が良いですか?

イベントログは、サイトコレクションが

SPDiagnosticsService.Local.WriteEvent(0, 
    new SPDiagnosticsCategory("MyCategory", 
     TraceSeverity.Unexpected, 
     EventSeverity.ErrorCritical), 
    EventSeverity.ErrorCritical, 
    "Assert failed: if (!spweb.Exists)" + sp.Url, 
    sp.ToString()); 

が欠落しているとき、私は行方不明のconfigリスト

bool configListExists = ListExists(spweb, ConfigListName); 
if (! configListExists) 
{ 
    ReportMissingConfigList(); 
    throw new Exception("Configuration list not found"); 
} 

public static bool ListExists(SPWeb web, string listName) 
{ 
    return web.Lists.Cast<SPList>().Any(list => string.Equals(list.Title, listName)); 
} 

答えて

1

をどうしたいのですが私は隣に個別のログ・リストを持つ推薦使用しました設定リストこのリストでは、ジョブが必要なときにジョブのステータスを書き留めてから、ユーザーがこのリストに通知を設定して適切な対策を講じることができます。

+0

これは、私が別に質問すると思いますが、a)ログリストが存在しない場合、b)手動で作成されていますか? 、c)リストを手動で作成するよりもはるかにプログラムで追加していますか? –

+0

フィーチャーレシーバーでリストを作成することをお勧めします。自動作成は作業を減らし、安定性を高め、アプリケーションのすべてのインスタンス(prod、test、dev)でリストの設定が完全​​に同じであることを確実にするため、手動による作成より常に好ましい(ほとんど) –

+0

その他の問題は、cofigリストのハードコーディングされた場所に依存するようなものです。この機能を有効にしたサイトコレクションのルートに作成したいのですが、その方法を試してみると機能しませんでした。私は別の質問としてそれを投稿し、次にリンクを使ってこれを更新する必要があります。 –

関連する問題