You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 7 ASP.NET Core部署Azure后默认货币为美元,如何修改为英镑?

问题原因与解决方案

你配置的RequestLocalizationOptions仅作用于请求上下文相关的区域场景(比如MVC视图渲染、模型验证信息等),但直接调用ToString("C")时,若未显式指定Culture,会使用当前线程的默认Culture。Azure App Service的系统默认线程Culture通常为en-US,因此会显示美元符号。

解决方法

1. 设置全局线程默认Culture

在应用启动代码中(Program.cs或Startup.cs)添加全局Culture配置,确保所有线程默认使用en-GB:

var enGbCulture = new CultureInfo("en-GB");
// 设置线程默认的区域和UI区域
CultureInfo.DefaultThreadCurrentCulture = enGbCulture;
CultureInfo.DefaultThreadCurrentUICulture = enGbCulture;

如果使用.NET 7顶级语句的Program.cs,可放在var builder = WebApplication.CreateBuilder(args);之后。

2. 启用RequestLocalization中间件

确保在Configure方法中启用请求本地化中间件(若尚未添加),让请求层面的区域设置生效:

app.UseRequestLocalization();

3. 配置Azure App Service应用设置

在Azure门户的App Service控制台中,进入配置 > 应用设置,添加以下配置项:

  • WEBSITE_DEFAULT_LOCALE = en-GB
  • DOTNET_CULTURE = en-GB
    该配置会直接覆盖Azure环境的默认区域设置。

4. 显式指定Culture调用ToString

如果仅需在特定场景显示英镑,可直接在调用时指定Culture:

decimal amount = 100.50m;
string poundAmount = amount.ToString("C", new CultureInfo("en-GB"));

内容的提问来源于stack exchange,提问作者WooHoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:45:27