Azure应用服务插槽-Environment.GetEnvironmentVariable()返回null

时间:2018-09-05 11:05:19

标签: azure asp.net-core environment-variables azure-web-sites

我刚刚在我的一个Azure App Services中创建了一个“临时”插槽。

在Azure门户的该插槽的“应用程序设置”中,我创建了一个新密钥,如下所示:

Azure-1

...并且将其设置为“广告位设置”,因为我不希望交换此值。

当我在.NET Core项目中执行代码时,Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")返回null。只要在计算机环境变量中设置了该值,它就可以在本地运行。

我想念什么吗?

2 个答案:

答案 0 :(得分:1)

Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")来获取应用程序设置应该可以在Azure WebApp上运行。我认为该值已被其他代码覆盖。

您可以通过以下方式对其进行调试。

1。检查暂存kudu(https://yousitename-staging.scm.azurewebsites.net/Env.cshtml)以检查环境变量 ASPNETCORE_ENVIRONMENT

2。我们也可以remote debug插入VS。

以下是我的测试步骤:

1。创建一个.net核心项目。

2。为现有Webpp创建一个插槽,并为该插槽设置app

3。使用kudu工具检查环境变量

4。在index.chtml.cs文件中添加以下代码

var appsetting = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
ViewData["appseting"] = appsetting;

5。在index.chtml文件中,将标题更改为appsetting值

@page
@model IndexModel
@{
    ViewData["Title"] = ViewData["appseting"];
}

6。以调试模式将WebApp发布到Azure

7。检查主页标题。

我们还可以进行远程调试来检查它。 enter image description here

答案 1 :(得分:0)

不确定在哪里/如何使用Environment.GetEnvironmentVariable(“ ASPNETCORE_ENVIRONMENT”),但是在我的项目中我以不同的方式检索它。我在Startup.cs中检索到它。您可以尝试类似的方法,看看是否能通过这种方式获得它吗?

public Startup(IHostingEnvironment env, ILogger<Startup> logger)
        {

            var envName = env.EnvironmentName;
        }

这应该在envName变量中为您提供环境名称。如果可行,我可以在代码中的其他位置为您提供帮助。