我有以下代码:
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);一旦运行,就会产生错误消息:
Sequence contains no matching element我猜是有人删除了语言,现在SC.Context.Database.Languages集合是空的,因此出现了错误。
我无法登录到sitecore cms,我想知道如何解决这个问题?
发布于 2015-11-27 15:37:18
您只需输入以下命令即可获得当前语言
var languages = Context.Database.GetLanguages();然后,您可以应用Where子句。Db.Languages和Db.GetLanguages()之间可能存在差异
发布于 2015-11-27 17:37:06
我还没有解决这个问题,但是控制了它,这样用户至少可以通过分配默认语言登录到cms,如果它们都不是可用的,使用以下代码:
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();
}我仍然不明白为什么语言集合是空的?
发布于 2015-11-29 14:07:45
sitecore语言存储在/sitecore/system/languages节点中。此外,最好使用FirstOrDefault而不是First,因为First将在未找到匹配项的情况下返回异常。
https://stackoverflow.com/questions/33952188
复制相似问题