C# Sitecore 6中的项为空
有时Sitecore不会返回某些项目。例如,在以下代码中:C# Sitecore 6中的项为空,c#,sitecore,sitecore6,C#,Sitecore,Sitecore6,有时Sitecore不会返回某些项目。例如,在以下代码中: Sitecore.Data.ID itemId = new Sitecore.Data.ID(id); Sitecore.Context.Database.GetItem(id); 这将返回null,但是,如果在内容编辑器的内容树上方的搜索中放置相同的字符串id,它将返回项目!上下文数据库是web的,我已经多次重新发布了该项目 我使用的是Sitecore 6.2.0(版本100701)。你确定这不是打字错误吗?我的意思是,你不应该把i
Sitecore.Data.ID itemId = new Sitecore.Data.ID(id);
Sitecore.Context.Database.GetItem(id);
这将返回null,但是,如果在内容编辑器的内容树上方的搜索中放置相同的字符串id,它将返回项目!上下文数据库是web的,我已经多次重新发布了该项目
我使用的是Sitecore 6.2.0(版本100701)。你确定这不是打字错误吗?我的意思是,你不应该把
itemId
传递给GetItem
,而不是把id
传递给GetItem
我不记得它到底是如何工作的,但是如果您向这个方法传递一个字符串,它可能会将其视为路径,而不是ID,并尝试按路径解析该项。您可以比我更快地检查:
Sitecore.Data.ID itemId=newsitecore.Data.ID(ID);
Sitecore.Context.Database.GetItem(itemId);
我刚刚遇到了同样的问题-GetItem()
函数返回NULL
拉扯头发大约一个小时后,我发现前端调用了我的GetItem()
函数,extranet/Anonymous
用户对我试图获取的项目没有读取权限
所以,记得检查安全 请参阅以下文章。
在web.config上,site name=“website”节点可能指向错误的数据库。数据库属性应为“master”或“web” 是的,我确定,抱歉我的错误,因为匆忙的复制粘贴,我使用了一些实用功能:公共静态Sitecore.Data.Items.Item GetItemById(Sitecore.Data.ID){return Sitecore.Context.Database.GetItem(ID);}可能,该项目仍然不在web数据库中?它可能有发布限制或未通过工作流。。。对web DB尝试简单的“从ID为'YOUR-GUID-HERE'的项中选择*”,以确保确定我找到了原因。。。sitecore似乎不喜欢上下文sitecore用户是extranet/匿名用户。我以普通用户身份登录,它可以正常工作……这是因为extranet\anonymous没有对该项目的读取权限。很好,现在问题解决了。我把问题退回去,因为它已经更新以反映答案,所以不再有意义了。