在WCF服务中调用Sitecore Database.Templates []时出现NullReferenceException

Kyl*_*ard 7 c# wcf sitecore

我是Sitecore开发的新手,所以如果这个问题是基本的,我很抱歉.我创建了一个代理(计划任务)和一个WCF服务,并将它们都添加到我的SiteCore项目中.代理调用WCF服务代码调用的相同代码.

我遇到的问题是,当我调用Database.Template[ID template]传递我想要处理的项目的相应模板的ID容器时,它在代理任务内部工作,但不在WCF服务内部.

Database.Template[ID id]对WCF服务内部的任何调用都给了我一个NullReferenceException,但是代理内部的完全相同的调用正确地收集了模板.

这是由于某些结构性原因依赖于调用应用程序是网页而不是Web服务?

编辑#1:我有svc作为允许的扩展,我已经尝试过两者

Sitecore.Configuration.Factory.GetDatabase("master") 
Run Code Online (Sandbox Code Playgroud)

var siteContext = Sitecore.Configuration.Factory.GetSite("websiteMaster");
siteContext.Database.Template[]; 
Run Code Online (Sandbox Code Playgroud)

两者都返回NullReferenceException.

我也可以成功获取一个Item,GetItem但是当我尝试访问该项的Template属性时,我得到了一个NullReferenceException.

jam*_*kam 8

您的WCF服务没有Sitecore上下文,因此Sitecore.Context.Database为null.

您可以添加svc到允许的扩展列表或通过获取数据Sitecore.Configuration.Factory.GetDatabase("master")