Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Sitecore 6中的项为空_C#_Sitecore_Sitecore6 - Fatal编程技术网

C# Sitecore 6中的项为空

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不会返回某些项目。例如,在以下代码中:

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没有对该项目的读取权限。很好,现在问题解决了。我把问题退回去,因为它已经更新以反映答案,所以不再有意义了。