在web上下文之外以编程方式访问Sitecore的任何方式



我正在为当前项目使用Sitecore直接访问API。我有时会遇到这样的情况:我希望有一个独立的程序集,它可以调用Sitecore,而不一定是在web上下文中。有没有任何方法可以在不将代码部署在网站中的情况下访问Sitecore上下文?

当然,还有大量的配置设置。到目前为止,我试图伪造网络上下文并提供必要的设置都失败了。是否有任何文档说明需要执行哪些特定步骤才能加载全局对象,以及完成Sitecore请求处理/管道处理通常会完成的所有其他操作?

如果你不想走web服务的道路,这篇博客文章描述了建立一个类库项目来访问Sitecore信息。在这种情况下,它是用于NUnit测试的,但我相信技术是相同的。

总之,它包括将Sitecore web.config信息复制到app.config文件(以及其他配置文件)中,引用相关的Sitecore程序集,并进行一些配置调整以修复对app_config文件夹的引用。

注意,当使用此技术时,您的Sitecore.Context.Item将为空,因此您可能需要通过项目的路径或Id(例如)直接访问项目

var db = Sitecore.Configuration.Factory.GetDatabase("master");
var homeItem = db.GetItem("/sitecore/content/home");
//or
var homeItem = db.GetItem(new Sitecore.Data.ID("<your GUID here>"));

最新更新