Sitecore Glass.Mapper返回空值

Sitecore Glass.Mapper返回空值,sitecore,sitecore7.2,glass-mapper,Sitecore,Sitecore7.2,Glass Mapper,突然之间,没有明显的原因,一段使用Glass.Mapper的代码总是运行良好,但现在不再这样做了。我正在尝试检索我的网站根元素的玻璃包装,它是模板菜单页: var root = Sitecore.Context.Database.GetItem("/sitecore/content/ecosystem"); 此元素不为null。但当我试图检索Glass.Mapper版本时: var TreeHead = new SitecoreContext().GetItem<MenuPage>

突然之间,没有明显的原因,一段使用Glass.Mapper的代码总是运行良好,但现在不再这样做了。我正在尝试检索我的网站根元素的玻璃包装,它是模板菜单页:

var root = Sitecore.Context.Database.GetItem("/sitecore/content/ecosystem");
此元素不为null。但当我试图检索Glass.Mapper版本时:

var TreeHead = new SitecoreContext().GetItem<MenuPage>(root.ID.Guid.ToString());
var TreeHead=newsiteCoreContext().GetItem(root.ID.Guid.ToString());
这个项目,以前从来不是空的,现在一直是空的

我确实读过,事实上,当我检查我网站的根目录时,语言似乎被设置为“hr”——一个我从未明确设置过的值,但它是我之前添加的网站一级孩子的名字,然后删除,因为它会引起问题


这是否会让Sitecore/Glass.Mapper认为“hr”(克罗地亚语)应该是语言,从而返回空项?在这种情况下,如何将语言更改回英语?

问题是由于您上次访问“/hr”时使用了错误的语言cookie,Sitecore将该cookie解释为请求使用克罗地亚语。再次访问该页面,即使它不存在,并检查cookies,您将看到它被设置为
网站#lang=hr
(在Chrome中,从资源选项卡)。即使您的系统上没有设置该语言,
httpRequestBegin
管道中的
languagesolver
处理器仍将该语言设置为上下文语言。由于该项不存在语言版本,Glass将返回null:

最简单的解决方案是清除cookies,以暂时解决问题


如果要完全避免这种情况,长期解决方案需要覆盖某些Sitecore处理器,不允许语言解析器为无效语言设置cookie,然后为无效语言抛出404。这里有更多信息,但我认为应该比讨论的内容更深入:

您是否尝试过清除cookie/浏览器缓存,或者尝试过匿名模式?奇怪-它在IE中工作,而在Chrome中不工作。也许系统不知何故从Chrome cookie中获取了这种语言?而这是一种语言cookie,天知道是从哪里设置的。该死如果你加上它作为答案,我将欣然接受。现在,我如何配置Sitecore来忽略这一点呢?哈哈,很高兴能提供帮助,这只是本周出现的随机事件之一,我以前遇到过问题:)