我通过数据库配置了一个计划任务,该任务按预期触发并调用 C# 类中的“执行”方法。我的问题是在我的 Execute 方法中无法访问 Sitecore 项目。我什至在调用 Sitecore.Context.Database 时得到 NullPointerExecption。
我想这一定是一个安全问题,这是有道理的。所以我尝试使用 UserSwitcher 和 SecurityDisabler 获取权限,但这没有帮助。
任何人都可以指出我缺少的东西吗?
您不能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)
| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |