gpt4 book ai didi

c# - Configuration.GetSection 始终返回 Value 属性 null

转载 作者:IT王子 更新时间:2023-10-29 04:38:46 31 4
gpt4 key购买 nike

每次调用 Configuration.GetSection 时,返回对象的 Value 属性始终为 null。

我的启动构造函数

public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();

this.Configuration = builder.Build();
}

我的ConfigureServices 方法

public void ConfigureServices(IServiceCollection services)
{
services.Configure<SqliteSettings>(opts => Configuration.GetSection("SqliteSettings").Bind(opts));

services.AddOptions();

services.AddMvc();
}

我的appsettings.json

{
"SqliteSettings": {
"DataSource": "C:\\db.sqlite",
"NewDatabase": true,
"Version": 3
}
}

我用来定义 SqliteSettings 的类

public class SqliteSettings
{
public string DataSource { get; set; }

public bool? NewDatabase { get; set; }

public int? Version { get; set; }

public string Password { get; set; }

public long? CacheSize { get; set; }

// More properties
}

我在想 JSON 可能需要具有相同数量的属性来匹配,或者它可能与数据类型定义有关,但也许这些完全不相关。

最佳答案

根据Microsoft Docs :

When GetSection returns a matching section, Value isn't populated. AKey and Path are returned when the section exists.

如果您想查看该部分的值,您需要调用 GetChildren() 方法:Configuration.GetSection("SqliteSettings").GetChildren();

或者你可以使用: Configuration.GetSection("SqliteSettings").Get<SqliteSettings>() . JSON 不需要具有相同数量的属性来匹配。不匹配的可为 null 的属性将设置为 null,不可为 null 的不匹配的属性将设置为其默认值(例如,int 将设置为 0)。

关于c# - Configuration.GetSection 始终返回 Value 属性 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46017593/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com