我正在实施Azure Key Vault,以保护我的开发团队的应用程序机密。要在生产中对Azure Key Vault进行身份验证,我想设置一些环境变量,如KV_APP_ID和KV_APP_SECRET,我在这里做过(我也尝试过用户变量):
现在在我的.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但我不希望变量的内容最终在源代码管理中。
有什么想法吗?
答案 0 :(得分:1)
嗯,这里真的不足以回答你的问题,但我可以根据你在IIS中托管这个问题的假设做出很好的猜测。
在IIS中托管时,为了让您的应用程序查看环境变量,必须将其运行的应用程序池配置为“加载用户配置文件”#34;。在IIS中,转到您网站的应用程序池的高级设置,您将在该列表中看到名为&#34;加载用户配置文件&#34;的设置。将其设置为true,然后回收应用程序池。