サイトコレクション内の特定の場所に構成リストが存在する必要があるSharePointタイマージョブがあります。そのリストが存在しない場合は、そのリストを作成して(もちろん、そのリストに入力して)、rerun the jobを作成できるようにする必要があります。SharePointタイマージョブからステータスを報告する方法
以下のコードを使用してイベントログに書き込むことができますが、失敗したジョブの状態を示すために例外をスローすることができますが、私がやりたいことは、 ULSを見たり、イベントログにアクセスしたりする必要はありません。これまで見つかった投稿はlike this oneとthis 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));
}
これは、私が別に質問すると思いますが、a)ログリストが存在しない場合、b)手動で作成されていますか? 、c)リストを手動で作成するよりもはるかにプログラムで追加していますか? –
フィーチャーレシーバーでリストを作成することをお勧めします。自動作成は作業を減らし、安定性を高め、アプリケーションのすべてのインスタンス(prod、test、dev)でリストの設定が完全に同じであることを確実にするため、手動による作成より常に好ましい(ほとんど) –
その他の問題は、cofigリストのハードコーディングされた場所に依存するようなものです。この機能を有効にしたサイトコレクションのルートに作成したいのですが、その方法を試してみると機能しませんでした。私は別の質問としてそれを投稿し、次にリンクを使ってこれを更新する必要があります。 –