首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sitecore在哪里保存SC.Context.Database.Languages中的语言?

sitecore在哪里保存SC.Context.Database.Languages中的语言?
EN

Stack Overflow用户
提问于 2015-11-27 15:22:59
回答 4查看 240关注 0票数 0

我有以下代码:

代码语言:javascript
复制
public void Process(SC.Pipelines.HttpRequest.HttpRequestArgs args)
{
   if (HttpContext.Current == null || SC.Context.Database == null)
   {
      return;
   }
string languageCode = DomainHandler.Instance.GetDomainLanguage(HttpContext.Current.Request.Url.Host);
SC.Globalization.Language language = SC.Context.Database.Languages.First(x => x.Name == languageCode);

一旦运行,就会产生错误消息:

代码语言:javascript
复制
Sequence contains no matching element

我猜是有人删除了语言,现在SC.Context.Database.Languages集合是空的,因此出现了错误。

我无法登录到sitecore cms,我想知道如何解决这个问题?

EN

回答 4

Stack Overflow用户

发布于 2015-11-27 15:37:18

您只需输入以下命令即可获得当前语言

代码语言:javascript
复制
var languages = Context.Database.GetLanguages();

然后,您可以应用Where子句。Db.Languages和Db.GetLanguages()之间可能存在差异

票数 1
EN

Stack Overflow用户

发布于 2015-11-27 17:37:06

我还没有解决这个问题,但是控制了它,这样用户至少可以通过分配默认语言登录到cms,如果它们都不是可用的,使用以下代码:

代码语言:javascript
复制
string languageCode = DomainHandler.Instance.GetDomainLanguage(HttpContext.Current.Request.Url.Host);
var languages = SC.Context.Database.GetLanguages().Where(l => l.Name == languageCode);
//make dutch default language
SC.Globalization.Language language = Sitecore.Globalization.Language.Parse("nl-NL");
if (languages.Count() > 0)
{
    language = languages.First();
}

我仍然不明白为什么语言集合是空的?

票数 0
EN

Stack Overflow用户

发布于 2015-11-29 14:07:45

sitecore语言存储在/sitecore/system/languages节点中。此外,最好使用FirstOrDefault而不是First,因为First将在未找到匹配项的情况下返回异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33952188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档