AZURE_FUNCTIONS_ENVIRONMENT 与 ASPNETCORE_ENVIRONMENT

Posted

技术标签:

【中文标题】AZURE_FUNCTIONS_ENVIRONMENT 与 ASPNETCORE_ENVIRONMENT【英文标题】:AZURE_FUNCTIONS_ENVIRONMENT vs ASPNETCORE_ENVIRONMENT 【发布时间】:2019-10-22 08:47:17 【问题描述】:

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

AZURE_FUNCTIONS_ENVIRONMENT ASPNETCORE_ENVIRONMENT

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

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

AZURE_FUNCTIONS_ENVIRONMENT 由主机/运行时函数在本地设置为 Development。它不会在 azure 中自动设置为 Production。可以在 azure 的应用设置中进行设置。 ASPNETCORE_ENVIRONMENT 不是由函数主机/运行时在本地或在 Azure 中设置的。

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

【问题讨论】:

已在 GitHub 上回答。 【参考方案1】:

在此处添加official answer from github issue 以方便大家:

您需要使用AZURE_FUNCTIONS_ENVIRONMENT。功能 为 Azure 上的 Function 应用程序提供支持的运行时是 WebHost 项目 这个回购。当主机初始化时,它会寻找 AZURE_FUNCTIONS_ENVIRONMENT 应用设置(如 EnvironmentSettingNames.EnvironmentNameKey) 和passes it to the IWebHostBuilder。 仅使用 ASPNETCORE_ENVIRONMENT 可能会导致所需的行为 更改和遥测丢失。

【讨论】:

请注意,这有一些怪癖。请参阅github.com/Azure/azure-functions-host/issues/6239 更多信息【参考方案2】:

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

我不知道为什么会有AZURE_FUNCTIONS_ENVIRONMENT。对于 ASP.NET Core 应用程序,我建议您坚持使用 IHostingEnvironment。以后IHostingEnvironment的版本会被IWebHostEnvironment替代。随着 3.0 的发布,他们将继续支持两者,直到将其删除。它将被标记为已过时。

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

【讨论】:

以上是关于AZURE_FUNCTIONS_ENVIRONMENT 与 ASPNETCORE_ENVIRONMENT的主要内容,如果未能解决你的问题,请参考以下文章