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的主要内容,如果未能解决你的问题,请参考以下文章