【问题标题】:Azure App Service Slot - Environment.GetEnvironmentVariable() returns nullAzure 应用服务槽 - Environment.GetEnvironmentVariable() 返回 null
【发布时间】:2018-09-05 11:05:19
【问题描述】:

我刚刚在我的一个 Azure 应用服务中创建了一个“暂存”槽。

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

...并将其设置为“插槽设置”,因为我不希望交换此值。

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

我错过了什么吗?

【问题讨论】:

  • 你有关于这个线程的任何更新吗?
  • @TomSun 遵循您的测试步骤后,我设法检查环境没有像我预期的那样“暂存”。我删除了该插槽,然后再次创建它,然后它就起作用了。这是一个奇怪的行为,但感谢你提醒我这个帖子,所以我可以给你一个反馈。
  • 很高兴知道它可以帮助你。

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


【解决方案1】:

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

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

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

2.我们也可以remote debug VS 插槽。

以下是我的测试步骤:

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

2.为现有的Webpp创建一个插槽并为插槽创建一个应用程序

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

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

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

5.在index.chtml文件中将title改为appsetting值

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

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

7.查看首页标题。

我们也可以远程调试来检查它。

【讨论】:

    【解决方案2】:

    不确定您在哪里/如何使用 Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"),但在我的项目中,我以不同的方式检索它。我在 Startup.cs 中检索它。你能试试类似的东西,看看你能不能这样?

    public Startup(IHostingEnvironment env, ILogger<Startup> logger)
            {
    
                var envName = env.EnvironmentName;
            }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      相关资源
      最近更新 更多