我有一个asp net core项目,我在kubernetes集群的linux容器内部署。我的秘密被挂载在容器中的秘密文件夹中,我找到了 https:/github.comaspnetConfigurationtreemastersrcConfig.KeyPerFile。 并试图使用 builder.AddKeyPerFile("/secrets", false);
配置["File1"]返回空,其中File1是 "secret "文件夹内的文件,其中包含一个秘密。配置["File1"]返回空,其中File1是 "secrets "文件夹内的一个文件,它包含其中一个秘密。
当我在服务代码中执行以下内容时,我能够读取秘密。
List<KeyValuePair<string, string>> secrets =
new List<KeyValuePair<string, string>>();
foreach (var secretFile in Directory.GetFiles("/secrets", "*.*", System.IO.SearchOption.AllDirectories))
{
secrets.Add(
new KeyValuePair<string, string>(
Path.GetFileName(secretFile), File.ReadAllText(secretFile)));
}
我试图找出如何使用 builder.AddKeyPerFile 扩展方法。
我使用.Net Core 3.1,它的工作。
new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile("appsettings.Development.json", optional: true)
.AddKeyPerFile("/secret/", optional: true)
.Build();
因此,我可以访问存储的秘密为。
var file1 = configuration["File1"];
我还没试过用旧版本的.Net Core,但3. 1版本肯定能用。我唯一遇到的问题是,路径需要是绝对的。