我正在做一个。NET Core 6项目,我面临一个问题,我总是收到 null 尝试从访问字符串数组时的值 appsettings.json 。以下是我设置一切的方式:
null
appsettings.json
appsettings.json :
{ "ColourCodes": [ "re", "bl", "gr" ] }
启动配置:在 Startup.cs ,我有以下设置:
Startup.cs
public Startup(IConfiguration configuration, IWebHostEnvironment environment) { _environment = environment; _configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services. Configure<Colours>(_configuration.GetSection("ColourCodes")); services.AddControllers() .AddJsonOptions(jsonOptions => { jsonOptions.JsonSerializerOptions.PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase; }); }
我创建了一个名为 Colours :
Colours
public class Colours { public List<string> ColourCodes { get; set; } }
在我的控制器中,我正试图通过 IOptions :
IOptions
private readonly IOptions<List<Colours>> _colours; public ColorController(IOptions<List<Colours>> colours) { _colours = colours; }
但是,当我尝试访问 _colours ,它总是返回 无效的 。我不确定我在这里遗漏了什么或做错了什么。有人能帮我理解如何正确地从中检索字符串数组吗 appsettings.json ?
_colours
无效的
它应该是:
services.Configure<Colours>(_configuration);
你的 Colours 类表示配置根目录中的安装程序,而不是嵌套的 ColourCodes 部分 _configuration.GetSection("ColourCodes") 将导致 [ "re", "bl", "gr" ] 无法绑定到的部分“已提取” 颜色 正确键入。
ColourCodes
_configuration.GetSection("ColourCodes")
[ "re", "bl", "gr" ]
颜色
如果您不希望将值存储在另一个JSON对象的配置嵌套的根中:
{ "Colours": { "ColourCodes": [ "re", "bl", "gr" ] } }
并将代码调整为:
services.Configure<Colours>(_configuration.GetSection("Colours"));