在dotnet core 2 app中找不到环境变量

时间:2017-09-28 13:32:55

标签: asp.net-core environment-variables .net-core

我正在实施Azure Key Vault,以保护我的开发团队的应用程序机密。要在生产中对Azure Key Vault进行身份验证,我想设置一些环境变量,如KV_APP_ID和KV_APP_SECRET,我在这里做过(我也尝试过用户变量):

Environment variables

现在在我的.NET CORE 2.0应用程序的Program.cs文件中,我想读取这些变量,但是我得到了空值。

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, config) =>
        {
            if (!context.HostingEnvironment.IsProduction()) return;

            config.SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", false)
                .AddEnvironmentVariables();

            var builtConfig = config.Build();

            config.AddAzureKeyVault(

                $"https://{Environment.GetEnvironmentVariable("KV_NAME")}.vault.azure.net/",
                Environment.GetEnvironmentVariable("KV_APP_ID"),
                Environment.GetEnvironmentVariable("KV_APP_SECRET"),
                new PrefixKeyVaultSecretManager(Environment.GetEnvironmentVariable("KV_PREFIX")));
            })
            .UseStartup<Startup>()
            .Build();

我查看了文档,但我似乎无法找到为什么我的环境变量未加载。我可以将它添加到launchSettings.json但我不希望变量的内容最终在源代码管理中。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

嗯,这里真的不足以回答你的问题,但我可以根据你在IIS中托管这个问题的假设做出很好的猜测。

在IIS中托管时,为了让您的应用程序查看环境变量,必须将其运行的应用程序池配置为“加载用户配置文件”#34;。在IIS中,转到您网站的应用程序池的高级设置,您将在该列表中看到名为&#34;加载用户配置文件&#34;的设置。将其设置为true,然后回收应用程序池。