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 才能防止这种情况发生。
谢谢,
詹姆斯
我的 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 才能防止这种情况发生。
谢谢, 詹姆斯