Azure Functions 应用程序的项目级别文化设置

Pin*_*ong 3 azure azure-functions

是否可以在 Azure Functions App 上更改项目级别的文化?

https://learn.microsoft.com/en-us/azure/azure-functions/functions-app-settings

该应用程序使用消费计划或高级计划,而不是通过 ASP.NET Core。

我的Startup.cs文件如下:

  public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
       }
}
Run Code Online (Sandbox Code Playgroud)

基于不同的 ASP.NET Core 是否可以Startup.cs 使用消费计划或高级计划?

Asp.net Core 必须使用如下所示的应用服务计划: https://andrewlock.net/adding-localization-to-an-asp-net-core-application/

nil*_*ils 7

将服务器上运行的旧应用程序迁移到 Azure 时,您始终需要注意最初从计算机获取的时区和文化设置。对于 Azure Functions,您可以在应用程序设置中设置时区:

WEBSITE_TIME_ZONE=Europe/London
Run Code Online (Sandbox Code Playgroud)

此处可以找到可能的值https://en.wikipedia.org/wiki/List_of_tz_database_time_zones。这对于似乎在 Linux 上使用 TZ 和在 Windows 上使用 WEBSITE_TIME_ZONE 的应用服务来说实际上是不同的。

对于文化来说,情况更为复杂。使用aspnet core,您可以在Startup类的Configure中定义它

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, 
ILoggerFactory loggerFactory)
    {
        var cultureInfo = new CultureInfo("en-US");
        app.UseRequestLocalization(new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture(cultureInfo),
            SupportedCultures = new List<CultureInfo>
            {
                cultureInfo,
            },
            SupportedUICultures = new List<CultureInfo>
            {
                cultureInfo,
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

这在 Azure Function Apps 中是不可能的。您可以做的是创建一个安装类,然后设置应用程序域和当前线程的区域性。只要 Azure 不更改应用程序域,这可能就会起作用。

[assembly: FunctionsStartup(typeof(Startup))]
namespace FunctionApp
{
    public class Startup : IWebJobsStartup
    {
        public void Configure(IWebJobsBuilder app)
        {
            var cultureInfo = new CultureInfo("en-US");
            CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
            CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
            Thread.CurrentThread.CurrentCulture = cultureInfo;
            Thread.CurrentThread.CurrentUICulture = cultureInfo;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)