无法读取自定义设置 JSON 文件

问题描述 投票:0回答:1

我添加了一个自定义 JSON 文件,其中包含我想要在 .NET8 API 中读取的设置。标准

appsettings.json
文件可正确读取,但自定义
secrets.json
则无法正确读取。我试图从中阅读的部分始终是
null
。我做错了什么?

Program.cs

var env = ConfigHelpers.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var config = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env}.json", optional: true, reloadOnChange: true)
                .AddJsonFile("secrets.json", optional: false, reloadOnChange: true)
                .AddEnvironmentVariables()
                .AddCommandLine(args)
                .Build();

var configurationModel = config.GetSection(ConfigurationModel.SectionName).Get<ConfigurationModel>();
builder.Services.AddSingleton(configurationModel);

var secretsConfigurationModel = config.GetSection(SecretsConfigModel.SectionName).Get<SecretsConfigModel>();
builder.Services.AddSingleton(secretsConfigurationModel);

从标准

appsettings.json
文件中读取的类:

public class ConfigurationModel
{
    public const string SectionName = "AppConfig";
    public int SaverDelay { get; set; } = 10000;
    public int SaverBatchSize { get; set; } = 1000;
}

我的自定义阅读课程

secrets.json

public class SecretsConfigModel
{
    public const string SectionName = "Encryption";
    public string TokenSecretSalt { get; set; }
}

secrets.json
文件:

{
  "Encryption": [
    { "TokenSecretSalt": "c48mt45ty487tg47y85mh8g5h6587h6g586gh568756" }
  ]
}
c# configuration .net-8.0 microsoft.extensions.configuration
1个回答
0
投票

"Encryption"
文件中
secrets.json
属性的值是对象的 array

{
  "Encryption": [ // Array start
    { "TokenSecretSalt": "c48mt45ty487tg47y85mh8g5h6587h6g586gh568756" }
  ] // Array end
}

您可以使用集合来绑定它,例如

SecretsConfigModel []

SecretsConfigModel secretsModel = 
    config.GetSection(SecretsConfigModel.SectionName).Get<SecretsConfigModel []>()
    .FirstOrDefault(); // Use SingleOrDefault() if there cannot be more than one.

演示小提琴#1 这里

或者,您可以从 JSON 中消除数组嵌套,并且当前的代码将起作用:

{
  "Encryption": { 
      "TokenSecretSalt": "c48mt45ty487tg47y85mh8g5h6587h6g586gh568756" 
  }
}

演示小提琴 #2 这里

© www.soinside.com 2019 - 2024. All rights reserved.