Sitecore计划任务:无法访问运行类中的任何项目

时间:2017-05-14 18:24:50

标签: sitecore task

我通过数据库配置了一个计划任务,该任务按预期触发,并在C#类中调用方法“Execute”。我的问题是,在我的Execute方法中,无法访问Sitecore项。调用Sitecore.Context.Database时,我甚至得到一个NullPointerExecption。

我想这肯定是一个安全问题,这是有道理的。所以我尝试使用UserSwitcher和SecurityDisabler获取权限,但这没有帮助。

有人能指出我缺少的东西吗?

1 个答案:

答案 0 :(得分:4)

您无法在计划任务中使用Sitecore.Context。那里不存在。 var masterDb = Sitecore.Data.Database.GetDatabase("master"); var webDb = Sitecore.Data.Database.GetDatabase("web"); 与HttpRequest绑定,并且在计划任务中没有请求。正如John W在他的文章(The Sitecore Context)中所写的那样:

  

由静态Sitecore.Context类公开的Sitecore上下文包含有关Sitecore安装和当前HTTP请求的信息。 web.config文件中定义的httpRequestBegin管道中的处理器主要负责定义Sitecore上下文。 Sitecore确定上下文数据库后,它确定该数据库中的上下文项。

在计划作业中,您应该按名称获取数据库,例如:

const unzip = zlib.createUnzip();

app.get('/file', (req, res) => {   
   fs.createReadStream('./upload/compress_aurelien-boquet.pdf')
      .pipe(unzip)
      .pipe(res); 
});