Configuration.GetSection总是返回null
问题描述:
每次我拨打Configuration.GetSection
时,返回对象的Value
属性始终为空。Configuration.GetSection总是返回null
我Startup
构造
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可能需要有相同数量的属性来匹配,或者它可能与数据类型定义有关,但也许这些是完全不相关的。
答
只需修改ConfigureServices
方法是像下面
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<SqliteSettings>(Configuration.GetSection("SqliteSettings"));
services.AddMvc();
}
,它应该工作。
答
这控制台应用程序
var conncetionString = config["ConnectionStrings:DefaultConnection"]
工作对我来说Unforunately,没有工作,但顺序放置可能解决了会在未来发生的错误。 'Configuration.GetSection'仍然返回,'.Value'为空。 –
你能分享你如何调用'.Value'吗? – Ali
要查看我是否获取JSON,只需执行'var x = Configuration.GetSection(“SqliteSettings”);'然后在Visual Studio中检查x,特别是为'Value'。 –