将服务器上运行的旧应用程序迁移到 Azure 时,您始终需要注意最初从计算机获取的时区和文化设置。对于 Azure Functions,您可以在应用程序设置中设置时区:
WEBSITE_TIME_ZONE=Europe/London
此处找到可能的值https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 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,
}
});
}
这在 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;
}
}
}