Sitecore,GlassMapper 不返回已知项目

Sitecore, with GlassMapper not returning known item

我的 Sitecore 传奇中的问题二:有一个类似于此的调用:

var item = sitecoreService.GetItem<KnownMappedObject>(knownId)

此代码在生产环境中有效,在大多数其他情况下,代码工作正常,但我导航到一个页面,这行 item 为空。

knownId 正确,例如它存在于数据库中,但返回时为空。我已经从本地生产中提取数据库以确保一切正确,我什至尝试确保配置正确。

此方法是否有任何其他规则可以使其 return 为空,即使该项目存在?

编辑 项目在数据库中,但不确定如何查看它关联的语言。内容不是多国语言。

编辑 2 因此,该项目正在从数据库中获取 returned,并且数据库中的语言建议使用 EN。但是,当我们单步执行代码(在 sitecore 中)时,它会在检查 Item.Version == 0 的项目上退出。解决这个问题的唯一方法是使用 VersionDisabler .我不认为这是答案,因为它不存在于生产中。

此外,正在传入的"Language"对象具有当前页面的名称??我还以为是 "en" 之类的东西呢??

谢谢, 詹姆斯

通常的原因是:

- 无上下文语言版本(这里默认定义的是单一语言吗'en'?)

- 当前用户没有读取权限(尝试使用 SecurityDisabler 包装)

想通了。

在这种情况下,Sitecore 将 URL 的第一部分作为语言,从而用未知语言过滤项目的版本。

导致商品未退回(因为不存在任何语言版本!)

有一个设置:

<setting name="Languages.AlwaysStripLanguage" value="false"/>

需要为 false 才能防止这种情况发生。

谢谢, 詹姆斯