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

Spa*_*ump 2 sitecore task

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

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

任何人都可以指出我缺少的东西吗?

Mar*_*lak 5

您不能Sitecore.Context在计划任务中使用。它在那里不存在。Sitecore.Context与HttpRequest绑定,定时任务中没有请求。正如 John 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");
Run Code Online (Sandbox Code Playgroud)