2017-05-14 42 views
1

我通過數據庫配置了計劃任務,該計劃任務按預期觸發,並在C#類中調用方法「執行」。我的問題是,在我的Execute方法中,不能訪問Sitecore項目。調用Sitecore.Context.Database時我甚至會得到一個NullPointerExecption。Sitecore計劃任務:無法訪問運行類中的任何項目

我想這肯定是一個安全問題,這是有道理的。所以我嘗試使用UserSwitcher和SecurityDisabler獲得權限,但這並沒有幫助。

任何人都可以指向我失蹤的東西嗎?

回答

2

在計劃任務中不能使用Sitecore.Context。它不存在那裏。 Sitecore.Context與HttpRequest綁定,並且計劃任務中沒有請求。正如約翰·W的他的文章(The Sitecore Context)寫道:

的Sitecore的背景下,由靜態Sitecore.Context類暴露,包含關於Sitecore的安裝與當前HTTP請求的信息。 web.config文件中定義的httpRequestBegin管道中的處理器主要負責定義Sitecore上下文。在Sitecore確定上下文數據庫後,它將確定該數據庫中的上下文項目。

在調度工作,你應該用它的名字得到數據庫,例如:

var masterDb = Sitecore.Data.Database.GetDatabase("master"); 
var webDb = Sitecore.Data.Database.GetDatabase("web"); 
+0

完美的作品! – SpaceJump