【问题标题】:How to get DotNet Core ApplicationName set by Environment Variable如何获取由环境变量设置的 DotNet Core ApplicationName
【发布时间】:2020-05-18 02:00:49
【问题描述】:

根据 .NET Core documentation,我应该可以使用环境变量设置应用程序名称。

环境变量:ASPNETCORE_APPLICATIONKEY

我认为情况并非如此。我将WebHostDefaults.ApplicationKey 设置添加到Program.cs,但我仍然无法使用环境变量覆盖它。

    private static IWebHost BuildWebHost(string[] args)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("hosting.json", true)
            .AddEnvironmentVariables("ASPNETCORE_")
            .AddCommandLine(args)
            .Build();

        return WebHost.CreateDefaultBuilder(args)
            .ConfigureLogging((context, builder) => { builder.ClearProviders(); })
            .UseConfiguration(config)
            .PreferHostingUrls(true)
            .UseStartup<Startup>()
            .UseSetting(WebHostDefaults.ApplicationKey, "CustomApplicationName")
            .Build();
    }

startup.cs 我只看到“CustomApplicationName”而不是环境变量。

public class Startup
{
    public Startup(IConfiguration configuration, IHostingEnvironment hostingEnvironment)
    {
        Configuration = configuration;
        Log.Information($"Startup of application {hostingEnvironment.ApplicationName} in Environment Mode {hostingEnvironment.EnvironmentName}");
    }
}

我也尝试在环境变量名称中使用双下划线。

我在 Mac OS 上运行。

【问题讨论】:

    标签: asp.net-core .net-core asp.net-core-2.1


    【解决方案1】:

    我怀疑这是文档“发明”的东西,实际上并没有实现。

    ASP.NET Core 托管在 github 上。我did a searchASPNETCORE_APPLICATIONKEY 唯一出现的地方是文档本身。它出现的唯一问题/公关是https://github.com/aspnet/Docs/pull/7493,它是将这个环境变量添加到文档的提交,并包含这个有见地的声明:

    我只是编造了 ASPNETCORE_APPLICATIONKEY 吗?是这样的吗?

    【讨论】:

    • 我认为你是对的。很好的发现。该字符串似乎没有出现在任何实际的 Github 代码中,并且只有 3 个实例出现在 Google 中(目前)。
    • 确实,正确的变量是 ASPNETCORE_APPLICATIONNAME
    【解决方案2】:

    正如其他答案中提到的,正确的环境变量名称是ASPNETCORE_APPLICATIONNAME,并记录在here。但是,即使从 .NET Core 3.1 开始,它也不起作用。有一个 GitHub issue 描述了这个 bug 的详细信息,但本质上,UseStartup&lt;&gt;() 方法中的代码将 ApplicationName 设置回其默认值,即程序集的名称。 p>

    即使您可以使用UseSetting() 方法覆盖它,我也不会这样做,基于this related GitHub issue 讨论线程中的警告。目前最安全的选择似乎是使用您自己单独的环境变量。

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多