【问题标题】:Why is my Sitecore.Context.Language resetting in Controller?为什么我的 Sitecore.Context.Language 在 Controller 中重置?
【发布时间】:2016-02-04 23:01:59
【问题描述】:

Sitecore 似乎对它的 Context 对象中的语言变量做了一些奇怪的事情。如果我使用 url ?sc_Lang=ru-RU 加载一个 CMS 页面(获取我网站的俄语版本),当它到达我的 MVC 控制器时,它会重置为语言回到 en

public PartialViewResult Navigation()
{
    //en
    var language = Sitecore.Context.Language;
}

我知道 sitecore 确实在某些时候设置了这个,因为如果我添加一个 HTTP 管道,我可以看到 Sitecore.Context.Languageru-RU

public class LanguageResolver
{
    public void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args)
    {
        //ru-RU
        var language = Sitecore.Context.Language;
    }
}

已注册:

<processor type="Sitecore.Pipelines.HttpRequest.ItemResolver, Sitecore.Kernel"/>
<processor type="namespace.LanguageResolver,RR.Web.Sc.Extensions" patch:source="Languages.config"/>

按照sitecore blog post 的建议

我对 sitecore dll 进行了一些研究,发现Sitcore.Context.Language 基本上是HttpContext.Current.Items["sc_Language"] 的包装器。当我检查这个时,我看到了相同的结果(即在管道中它是 ru-RU 在控制器中它是 en

所以某个地方正在将这个HttpContext Item 变成"en"

作为实验,我将一个新变量放入Items 集合中。然后我可以在 Controller 中再次看到它(处于正确的状态),因此 Items 集合正确地传递到了控制器中。

我最初并未开发此站点,但我在代码库中看不到更改此语言变量的任何地方。

有其他人经历过吗?我错过了什么?我需要配置什么,检查一下?

sitecore 文档(和往常一样)在这个问题上非常糟糕。


跟进@jammykam 的评论:

我可以看到响应 Set-Cookie: redrow#lang=ru-RU; path=/ 的 lang cookie 并且设置了语言:

【问题讨论】:

  • 为了确保没有发生奇怪的事情,您可以尝试清除 cookie(或检查它们并确保 website#lang=ru-RU)。您是否已将 ru-RU 添加到 Sitecore?你的本地系统支持吗?
  • @jammykam,在上面添加了详细信息。我很想知道是否有人以前在 MVC 环境中看过这个?我猜它在某个地方对某人有用?
  • 您可以将语言解析器移到项目解析器之前吗? Sitecore 中的默认顺序是: 其他处理器 ... 和之后
  • 语言解析器目前实际上并没有做任何事情,我只是将它用作拦截器,以查看语言设置为进一步推进管道。 @sitecoreclimber 现在说在管道中移动它可能会很有趣......嗯
  • 检查是否有效,如果有效,我会像回答一样移动我的评论

标签: c# asp.net-mvc sitecore sitecore8


【解决方案1】:

Sitecore 10中有a few places in code,其中语言设置器使用OOB:

即使来自 Sitecore.MVC 命名空间的被调用者在可疑列表的顶部,我还是建议通过 restoring PDBs and loading them to debugger 调试 Sitecore.Context.Language 设置器以找出真正的罪魁祸首。您还将看到语言切换逻辑背后的机制/动机。

即使getter 可能会被优化,您仍然可以disable optimizations to ease debugging

【讨论】:

  • 我已经有 6 年没有在 sitecore 上工作了,所以我不能真正支持或接受这个答案,因为我不知道它是否有用。所以我得看看其他人是怎么想的
猜你喜欢
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 2019-04-29
  • 2011-01-16
  • 1970-01-01
  • 2020-07-11
相关资源
最近更新 更多