2012-08-14 80 views
5

報告狀態我需要一個配置列表中的網站集中在特定位置存在一個SharePoint計時器作業。如果該列表不存在,我想向用戶指出,以便他們可以創建(並且當然填充)所述列表和rerun the job如何從SharePoint計時器作業

我可以使用下面的代碼寫入事件日誌,我知道我可以拋出一個異常來指示失敗的作業狀態,但是我想要做的就是拋出一個異常,並在消息中指出問題這不需要查看ULS或訪問事件日誌。我到目前爲止發現的帖子like this onethis one沒有太多細節。

所以兩個問題: 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()); 

事件日誌中使用我想用什麼失蹤的配置列表

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

這就引出了另一個問題,我想我會問seperately,A)如果日誌列表不存在',B),也許我應該添加的列表中FeatureActivation功能接收方法,而不是假設他們」已經手動創建? ,c)以編程方式添加列表,比手動創建列表好得多? – 2012-08-15 14:34:01

+0

正如你所建議的那樣,我會建議你在功能接收器中創建列表。自動創建(幾乎)總是比手動創建更可取,因爲它可以減少工作量,增加穩定性並確保列表的設置在應用程序的所有實例(prod,test,dev)中完全相同。 – 2012-08-16 06:34:15

+0

其他問題仍然依賴於cofig列表的硬編碼位置。我想在啓動該功能的網站集的根目錄中創建它,但是當我嘗試這種方法時,我無法使其正常工作。我將不得不將它作爲另一個問題發佈,然後用鏈接更新這個問題。 – 2012-08-16 14:19:52

相關問題