2010-05-05 30 views
6

我想從代碼中啓動計時器作業需要Farm管理員憑據。但是,我需要從任何網站中使用的Web部件開始計時器作業。現在,當我嘗試啓動這個工作時,它顯然會給我一個拒絕訪問錯誤,因爲應用程序池標識不是農場管理員。有關如何解決此問題的任何想法?來自SPWeb的計時器作業

謝謝,

回答

6

計時器作業作爲服務器場管理員運行,不打算由最終用戶直接觸發。由於某些作業可能需要大量資源,因此只有農場管理員可以創建新作業或修改現有作業的計劃。

一個解決方案是使用SPWorkItem基礎結構對用戶任務進行排隊,然後由來自SPWorkItemJobDefinition的自定義計時器作業進行處理。您的網頁部分將撥打SPSite.AddWorkItem添加工作項目。當您的計時器作業運行時,它將查找具有匹配的WorkItemType GUID的任何工作項並調用ProcessWorkItem過載。

3

你是對的。要啓動計時器作業,應用程序池用戶必須是服務器場管理員。由於啓動計時器作業需要使用SPSchedule更新SPJobDefinition對象。 SPJobDefinition是存儲在SharePoint配置數據庫中的SPPersistedObject。只有服務器場管理員可以寫入此數據庫。

我看不出有辦法解決這個問題。

解決方法: 根據您的要求,您可以編寫定期運行的主作業。此作業可以查詢SharePoint列表並啓動由此列表項定義的另一個作業。由於主作業在Farm Administrator帳戶下運行,因此作業將能夠啓動新的計時器作業。

相關問題