我们将一些敏感密钥和连接字符串存储在Web App应用程序设置下的连接字符串部分中:
我们使用ConfigurationBuilder
:
Configuration = new ConfigurationBuilder()
.SetBasePath(environment.ContentRootPath)
.AddEnvironmentVariables()
.Build();
我希望AddEnvironmentVariables()
能够获取这些连接字符串,但事实并非如此。请注意,如果您在Web App中将这些值设置为“应用程序设置”,则此功能可用。
仔细观察(使用Kudu控制台)我发现为这些连接字符串设置的环境变量的前缀是 CUSTOMCONNSTR _ :
CUSTOMCONNSTR_MongoDb:ConnectionString=...
CUSTOMCONNSTR_Logging:ConnectionString=...
CUSTOMCONNSTR_ApplicationInsights:ChronosInstrumentationKey=...
我现在应该如何使用ConfigurationBuilder
读取这些连接字符串?
修改
我发现AddEnvironmentVariables
参数存在一个方便的prefix
重载,描述如下:
// prefix:
// The prefix that environment variable names must start with. The prefix will be
// removed from the environment variable names.
但是将.AddEnvironmentVariables("CUSTOMCONNSTR_")
添加到配置构建器也不起作用!
答案 0 :(得分:1)
它应该可以工作,它在我的示例应用程序中为我做了:https://github.com/davidebbo-test/AspNetCoreDemo。具体做法是:
首先要确认我的工作是否有效,并试着看看你的做法有何不同。 您永远不需要对CUSTOMCONNSTR_
前缀做出任何假设!
答案 1 :(得分:1)
但是将.AddEnvironmentVariables(“CUSTOMCONNSTR_”)添加到配置构建器也不起作用!
带前缀的AddEnvironmentVariables只添加必须带有指定前缀的环境变量的限制。它不会改变环境变量。
要从连接字符串配置中检索值,您可以使用以下代码。
self.myAwesomeSlider?.integerValue = Int(value)
对于分层结构设置,请将其添加到应用程序设置,而不是Azure门户上的连接字符串。
我现在应该如何使用ConfigurationBuilder读取这些连接字符串?
作为一种变通方法,您可以在获取连接字符串后重新添加EnvironmentVariable并重建ConfigurationBuilder。以下代码供您参考。
Configuration.GetConnectionString("MongoDb:ConnectionString");