![](/img/trans.png)
[英]Configuration.GetSection returns a ConfigurationSection that doesn't exists in the file
[英]Why don't the configuration values in my appsettings.json file map to my custom POCO object's fields via Configuration.GetSection().Get<MyObject>?
我有一些 appsettings.json 配置文件:
{
"PocoSettings": {
"ValueOne": "Foo",
"ValueTwo": "Bar"
}
}
以及它應該填充的設置對象:
public class PocoSettings
{
public string ValueOne;
public string ValueTwo;
}
我嘗試在我的 Startup.cs 文件中填充它:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
this.Configuration = builder.Build();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var MySettings = this.Configuration.GetSection("PocoSettings").Get<PocoSettings>();
// Inject MySettings into your DI container of choice here.
}
MySettings
對象已創建,但未填充值。 ValueOne
和ValueTwo
均為空。 為什么?
配置擴展需要顯式公共 getter 和 setter。 如果它們是隱式的,或者 get 或 set 是私有的,則不會映射 POCO 對象。 該課程應閱讀:
public class PocoSettings
{
public string ValueOne { get; set; }
public string ValueTwo { get; set; }
}
嘗試這個:
PocoSettings MySettings = this.Configuration.Get<PocoSettings>();
我使用以下 ConfigurationBuilder 和我的 SectionsCollection 類對其進行測試。
var baseConfig = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("mySettings.json")
.Build();
SectionsCollection sectionsCollection = baseConfig.Get<SectionsCollection>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.