【问题标题】:Items are null in Sitecore 6Sitecore 6 中的项目为空
【发布时间】:2016-05-07 03:53:12
【问题描述】:

有时 Sitecore 不会退回某些项目。比如下面的代码:

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

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

我使用的是 Sitecore 6.2.0(修订版 100701)。

【问题讨论】:

  • 我回滚了这个问题,因为它已经更新以反映答案 - 所以不再有意义。

标签: c# sitecore sitecore6


【解决方案1】:

你确定这不是错字吗?我的意思是,你不应该将itemId 传递给id 而不是只传递给GetItem 吗?

我不记得它是如何工作的,但是如果你将一个字符串传递给这个方法,它可能会将它视为路径,而不是 ID,并尝试通过路径解析项目。你可以比我更快地检查这个:

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

【讨论】:

  • 是的,我确定,抱歉我的错误,因为匆忙复制粘贴,我正在使用一些实用功能: public static Sitecore.Data.Items.Item GetItemById (Sitecore.Data.ID id) { return Sitecore.Context .Database.GetItem(id); }
  • 可能,该项目仍然不在网络数据库中?它可能有发布限制或未通过工作流...尝试对 Web DB 进行简单的“从 ID = 'YOUR-GUID-HERE' 的项目中选择 *”以确保
  • 好的,我发现了原因是什么......当上下文 sitecore 用户是外联网/匿名时,sitecore 似乎不喜欢。我以普通用户身份登录,它可以工作...
  • 这是因为 Extranet\anonymous 没有对该项目的读取权限。太好了,现在解决了
【解决方案2】:

我也遇到了同样的问题 - GetItem() 函数返回 NULL

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

所以,记得检查安全性!

【讨论】:

    【解决方案3】:

    参考以下文章。 http://sdn.sitecore.net/Articles/API/Context%20and%20databases.aspx

    在 web.config 上,站点名称="website" 节点可能指向错误的数据库。数据库属性应为“master”或“web”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多