Culture is suddenly not supported anymore on Azure web app(Azure Web 应用突然不再支持文化)
问题描述
Out of the blue our Azure web app is spewing out errors regarding a Culture that is not supported. We load up a list of countries to show on the front page but this is suddenly giving errors. The same code is used on other various web apps as well and they aren't having the problem.
The following code gives a problem.
private List<SelectListItem> Countries()
{
RegionInfo country = new RegionInfo(new CultureInfo("nl-BE", false).LCID);
List<SelectListItem> countryNames = new List<SelectListItem>();
foreach (CultureInfo cul in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
country = new RegionInfo(new CultureInfo(cul.Name, false).LCID);
countryNames.Add(new SelectListItem() { Text = country.DisplayName, Value = country.DisplayName });
}
return countryNames.GroupBy(x => x.Text).Select(x => x.FirstOrDefault()).ToList<SelectListItem>().OrderBy(x => x.Text).ToList();
}
I placed a try-catch in the for-each so I can pinpoint the cultures that are giving errors. The following cultures are suddenly returning errors:
<errors>
<LCID>4096</LCID>
<Name>ar-001</Name>
</errors>
<errors>
<LCID>4096</LCID>
<Name>el-CY</Name>
</errors>
<errors>
<LCID>4096</LCID>
<Name>en-BB</Name>
</errors>
<errors>
<LCID>4096</LCID>
<Name>en-BS</Name>
</errors>
<errors>
<LCID>4096</LCID>
<Name>en-HK</Name>
</errors>
<errors>
<LCID>4096</LCID>
<Name>en-NL</Name>
</errors>
<errors>
<LCID>4096</LCID>
<Name>en-SE</Name>
</errors>
<errors>
<LCID>4096</LCID>
<Name>es-419</Name>
</errors>
Can someone help me with this issue? I can't seem to make sense on why this web app is suddenly giving these errors.
Almost all of the new locales in Windows are not assigned explicit LCIDs - because there is not enough "room" for the thousands of languages in hundreds of countries problem. They all get assigned 0x1000.
In this case, I think a changing LCID to name might work for you:
country = new RegionInfo(new CultureInfo(cul.Name, false).LCID);
to just use the culture name:
country = new RegionInfo(cul.Name);
Of course, any other use of LCID would also need to recognize the culture name instead.
We actually recommend that RegionInfo be constructed with a full culture name since that is more explicit than just the region name. RegionInfo has some properties that "depend" on the languages, such as the DisplayName. es-US and en-US provide Spanish or English strings for "United States", for example.
Hope that helps,
-Shawn
这篇关于Azure Web 应用突然不再支持文化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Azure Web 应用突然不再支持文化
基础教程推荐
- 如何使用 .Net 检查 Active Directory 服务器是否已启动并正在运行? 2022-01-01
- Moq It.Is<>不匹配 2022-01-01
- 如果有人提交恶意软件Nuget包怎么办? 2022-01-01
- WPF 模态进度窗口 2022-01-01
- 当值可以是对象或空数组时反序列化 JSON 2022-01-01
- 我应该在后面的代码中直接使用 Linq To SQL 还是使 2022-01-01
- C# 从 List<List<int>> 中删除重 2022-01-01
- 禁止输入少量字符,例如'<'、'&a 2022-01-01
- Azure Functions:CosmosDBTrigger 未在 Visual Studio 中触发 2022-01-01
- .NET SerialPort DataReceived 事件未触发 2022-01-01
