有时,Sitecore不会退回某些商品。例如,在以下代码中:
Sitecore.Data.ID itemId = new Sitecore.Data.ID(id);
Sitecore.Context.Database.GetItem(id);
这将返回null,但是如果在内容编辑器中的内容树上方的搜索上放置相同的字符串id,它将返回该项目!上下文数据库是web,我已多次重新发布该项目。
我使用的是Sitecore 6.2.0(rev.100701)。
答案 0 :(得分:5)
你确定它不是拼写错误吗?我的意思是,您不应该将itemId
而不仅仅id
传递给GetItem
吗?
我不记得它是如何工作的,但是如果你将一个字符串传递给这个方法,它可能会将它视为路径,而不是ID,并尝试按路径解析项目。你可以比我更快地检查这个:
Sitecore.Data.ID itemId = new Sitecore.Data.ID(id);
Sitecore.Context.Database.GetItem(itemId);
答案 1 :(得分:5)
我遇到了同样的问题 - GetItem()
函数返回NULL
拉了我的头发大约一个小时后,我发现我的GetItem()
函数被前端调用,而extranet/Anonymous
用户没有读取我正在尝试的项目的权限得到。
所以,请记得检查安全性!
答案 2 :(得分:0)
参考以下文章。 http://sdn.sitecore.net/Articles/API/Context%20and%20databases.aspx
在web.config上的网站名称="网站"节点可能指向错误的数据库。数据库属性应为" master"或" web"。