2010-12-07 41 views
5

有时Sitecore不会返回某些项目。例如,下面的代码:Sitecore中的项目为空6

Sitecore.Data.ID itemId = new Sitecore.Data.ID(id); 
Sitecore.Context.Database.GetItem(id); 

这将返回null,但是如果相同的字符串ID被放置在内容编辑器中的内容树上面的搜索,它会返回的项目!上下文数据库是web,我已经多次重新发布该项目。

我正在使用Sitecore 6.2.0(rev。100701)。

+0

我把问题推回去了,因为它已经更新以反映答案 - 所以不再有意义。 – 2011-09-29 14:13:49

回答

5

你确定这不是一个错字吗?我的意思是,你不应该通过itemId而不是只有idGetItem

我不记得它是如何工作的,但是如果你传递一个字符串给这个方法,它可能把它当作路径而不是ID,并且试图通过路径来解决这个项目。您可以检查这个速度远远超过我做:

Sitecore.Data.ID itemId = new Sitecore.Data.ID(id); 
Sitecore.Context.Database.GetItem(itemId); 
+0

是的,我很确定,对不起,我的错误,因为匆忙复制粘贴,即时通讯使用一些实用功能:public static Sitecore.Data.Items.Item GetItemById(Sitecore.Data.ID id) { return Sitecore.Context.Database.GetItem ID); } – lurscher 2010-12-07 17:33:59

5

我有同样的问题 - GetItem()函数返回NULL

拉我的头发了大约一个小时后,我发现我的GetItem()函数的调用前端和extranet/Anonymous用户对我试图获取的项目没有读取权限。

因此,请记住检查安全!