Search code examples
c#asp.net-core-mvcwindows-server-2019asp.net-core-3.1

Decimal separator missing


When i publish and run my app on production server decimal separator (for decimal type numbers) is disappearing (for background calculations and for for display). eg: 26,1205 -> 261205

It only happens on remote Windows Server 2019 Standard. That's what I did, but it doesn't help still:

I set CultureInfo for application in Startup.cs in Configure method:

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 }
});

I checked region settings on windows server: enter image description here


Solution

  • Thanks to user mr. Matthew Watson for guiding me right.

    App executes delayed scheduled background task for currency operations (using BackgroundService class). The problem was actual for that thread. So i explicitly set CultureInfo right before performing operations.

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