【问题标题】:Decimal separator missing缺少小数分隔符
【发布时间】:2020-01-07 11:51:07
【问题描述】:

当我在生产服务器上发布和运行我的应用程序时,小数分隔符(用于十进制类型数字)正在消失(用于背景计算和显示)。 例如:26,1205 -> 261205

仅在远程 Windows Server 2019 Standard 上发生。这就是我所做的,但它仍然没有帮助:

我在Configure方法中为Startup.cs中的应用设置了CultureInfo

var defaultDateCulture = "ru-RU"; //no matter what culture is set here (en, ru, etc), it applied locally but not on production
var ci = new CultureInfo(defaultDateCulture);
app.UseRequestLocalization(new RequestLocalizationOptions
{
    DefaultRequestCulture = new RequestCulture(ci),
    SupportedCultures = new List<CultureInfo> { ci },
    SupportedUICultures = new List<CultureInfo> { ci }
});

我检查了 Windows 服务器上的区域设置:

【问题讨论】:

  • 这几乎可以肯定是因为它使用的语言环境有一个逗号作为千位分隔符。小数到字符串的转换可能发生在与您认为的文化不同的不同线程上。

标签: c# asp.net-core-mvc windows-server-2019 asp.net-core-3.1


【解决方案1】:

感谢用户先生。 Matthew Watson 指导我正确。

App 为货币操作执行延迟的计划后台任务(使用BackgroundService 类)。该线程的问题是实际的。所以我在执行操作之前明确设置了CultureInfo

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
    ...
    Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");
    ...
}

【讨论】:

    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2018-04-25
    • 2010-10-29
    • 1970-01-01
    相关资源
    最近更新 更多