相关疑难解决方法(0)

Azure 应用服务似乎在 .NET 5 模式下启用了 NLS

在花了无数个小时来了解错误的核心后,我最终将问题归结为在 .NET 5 中使用string.Comparewith的问题StringComparison.InvariantCultureIgnoreCase

考虑以下两个 dotnetfiddle:

运行 .NET 4.7.2 时,结果为 -1,运行 .NET 5 时,结果为 1。

经过一番浏览,这导致了以下通知:

所以,按照这个,-1 的结果是 NLS 版本,而 1 的 .NET 5 结果是 ICU 版本。

但是,当我在 .NET 5 模式下启动 Azure 应用服务时,上述代码在 Razor 页面中的结果是 -1,也就是:NLS 版本。

这可能会导致各种奇怪的问题,因为两个不同的系统会导致意想不到的结果。

当我将以下内容添加到我的项目文件中时,如上一篇文章所述,我的本地环境也输出 -1。

<ItemGroup>
  <RuntimeHostConfigurationOption Include="System.Globalization.UseNls" Value="true" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

无论我在 Azure 中使用什么样的配置,它都会一直输出 -1。

说来话长,Azure 出了点问题。根据文档,我的 Windows 版本足够新,可以启用 ICU。看起来 Azure 应用服务要么使用强制 NLS 模式,要么正在运行我的本地机器没有的某些 ICU 版本。

任何人都知道我如何确定 Azure 正在使用哪个 …

c# globalization azure nls icu

5
推荐指数
1
解决办法
52
查看次数

标签 统计

azure ×1

c# ×1

globalization ×1

icu ×1

nls ×1