在azure函数(v2,c#)中,有两个环境变量可以潜在地用于标识当前环境的名称。
AZURE_FUNCTIONS_ENVIRONMENT
ASPNETCORE_ENVIRONMENT
我打算使用AZURE_FUNCTIONS_ENVIRONMENT
,我想知道是否有理由选择一个?
就两者的行为而言,这是我发现的:
AZURE_FUNCTIONS_ENVIRONMENT
由功能host / runtime在本地设置为Development
。不会自动将其自动设置为Production
。可以在“应用设置”中以天蓝色设置此设置。ASPNETCORE_ENVIRONMENT
不在本地或Azure中由主机/运行时函数设置。几周前,我也对此提出过github issue,但没有得到回应。我希望我能在这里得到答案。
答案 0 :(得分:2)
在此处添加github问题的官方答案,以使所有人受益:
您将要使用
/.composer/vendor/bin
。功能 在Azure上为Function应用程序供电的运行库是 这个仓库。主机初始化时,它会寻找AZURE_FUNCTIONS_ENVIRONMENT
应用设置(为AZURE_FUNCTIONS_ENVIRONMENT
和passes it to the IWebHostBuilder。 仅使用EnvironmentSettingNames.EnvironmentNameKey
可能导致期望的行为 变化和遥测遗漏了。
答案 1 :(得分:1)
ASPNETCORE_ENVIRONMENT
是默认的环境变量,用于确定IHostingEnvironment
的环境。 IHostingEnvironment
目前有两种实现。可以在here中找到一个,并且只能在内部使用。另一个here。
我不知道为什么会有AZURE_FUNCTIONS_ENVIRONMENT
的确切想法。我建议您对ASP.NET Core应用程序坚持使用IHostingEnvironment
。 IHostingEnvironment
的版本将来会被IWebHostEnvironment
取代。随着3.0的发布,他们将继续支持这两个版本,直到将其删除为止。它将被标记为过时。
在您的函数中,您始终可以设置自定义variables并仅通过Environment.GetEnvironmentVariable("MY-VAR")
访问它们。