我正在为当前项目使用Sitecore直接访问API。我有时遇到一种情况,我希望有一个独立的程序集调用Sitecore,而不一定是在Web上下文中。有没有办法在没有在网站上部署代码的情况下访问Sitecore上下文?
当然有大量的配置设置。到目前为止,我试图欺骗网络环境并提供必要的设置已经失败了。是否有任何关于加载全局对象需要执行哪些特定步骤的文档,以及通常由Sitecore请求处理/管道处理完成的所有其他操作?
答案 0 :(得分:2)
如果您不想沿着Web服务路线前进,this blog post描述了设置类库项目以访问Sitecore信息。在这种情况下,它用于NUnit测试,但我相信技术是相同的。
总而言之,它涉及将Sitecore web.config信息复制到app.config文件(以及其他配置文件)中,引用相关的Sitecore程序集并进行一些配置调整以修复对App_Config文件夹的引用。 / p>
注意,使用此技术时,您的Sitecore.Context.Item
将为null,因此您可能需要直接通过其路径或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>"));