如何获取由环境变量设置的DotNet Core ApplicationName

时间:2018-10-18 17:20:22

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

根据.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上运行。

2 个答案:

答案 0 :(得分:1)

如其他答案所述,正确的环境变量名称为ASPNETCORE_APPLICATIONNAME,并记录在here中。但是,即使从.NET Core 3.1开始,它也不起作用。有GitHub issue描述了此错误的详细信息,但实际上,UseStartup<>()方法中的代码将 ApplicationName 设置回其默认值,即默认名称。组装。

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

答案 1 :(得分:0)

我怀疑这是文档“发明”的,实际上并未实现。

ASP.NET Core托管在github上。我did a searchASPNETCORE_APPLICATIONKEY出现的唯一位置是文档本身。出现的唯一问题/ PR是https://github.com/aspnet/Docs/pull/7493,这是将环境变量添加到文档中并包含以下有深刻见解的声明:

  

我只是组成ASPNETCORE_APPLICATIONKEY吗?那是东西吗?