AZURE_FUNCTIONS_ENVIRONMENT与ASPNETCORE_ENVIRONMENT

时间:2019-06-06 19:53:33

标签: c# azure asp.net-core azure-functions

在azure函数(v2,c#)中,有两个环境变量可以潜在地用于标识当前环境的名称。

  • AZURE_FUNCTIONS_ENVIRONMENT
  • ASPNETCORE_ENVIRONMENT

我打算使用AZURE_FUNCTIONS_ENVIRONMENT,我想知道是否有理由选择一个?

就两者的行为而言,这是我发现的:

  • AZURE_FUNCTIONS_ENVIRONMENT由功能host / runtime在本地设置为Development。不会自动将其自动设置为Production。可以在“应用设置”中以天蓝色设置此设置。
  • ASPNETCORE_ENVIRONMENT不在本地或Azure中由主机/运行时函数设置。

几周前,我也对此提出过github issue,但没有得到回应。我希望我能在这里得到答案。

2 个答案:

答案 0 :(得分:2)

在此处添加github问题的官方答案,以使所有人受益:

  

您将要使用/.composer/vendor/bin。功能   在Azure上为Function应用程序供电的运行库是   这个仓库。主机初始化时,它会寻找   AZURE_FUNCTIONS_ENVIRONMENT应用设置(为   AZURE_FUNCTIONS_ENVIRONMENTpasses it to the IWebHostBuilder。   仅使用EnvironmentSettingNames.EnvironmentNameKey可能导致期望的行为   变化和遥测遗漏了。

答案 1 :(得分:1)

ASPNETCORE_ENVIRONMENT是默认的环境变量,用于确定IHostingEnvironment的环境。 IHostingEnvironment目前有两种实现。可以在here中找到一个,并且只能在内部使用。另一个here

我不知道为什么会有AZURE_FUNCTIONS_ENVIRONMENT的确切想法。我建议您对ASP.NET Core应用程序坚持使用IHostingEnvironmentIHostingEnvironment的版本将来会被IWebHostEnvironment取代。随着3.0的发布,他们将继续支持这两个版本,直到将其删除为止。它将被标记为过时。

在您的函数中,您始终可以设置自定义variables并仅通过Environment.GetEnvironmentVariable("MY-VAR")访问它们。