背景
在将公司一款基于 .NET Framework 的控制台程序迁移到 .NET Core 3.1 时,发现程序中本地化的部分失效,症状类似于对 Thread.CurrentThread.CurrentCulture.Name
的值进行 Substring()
操作时抛出 ArgumentOutOfRangeException
异常。
该程序在 Windows Container 中工作良好,迁移为 .NET Core 后在我的 Windows 开发机上也运行良好,一旦部署到 K8s 的 Linux 容器中就会出现问题。容器使用的是基于微软官方的 .NET Runtime 3.1 镜像。
本文按我当时解决此问题的思路记录,从 Windows 开始,挨个环境测试 CurrentThread.CurrentCulture
。