我有这个appsettings.json文件:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"OracleOptions": {
"Login": "hr",
"Password": "password"
},
"Test": "test value"
}
我想把这个设置转移到类:
public class OralceOptions
{
public string Login { get; set; }
public string Password { get; set; }
}
我用ConfigureServices方法编写此代码。但是配置文件没有绑定。什么是问题?我做错了什么?
var oracleOptions = Configuration.Get<OralceOptions>();
因为在appsettings.json
文件中,OrcleOptions
是嵌套属性。您需要降到那个级别,然后需要调用Get
方法。这应该有效:
var oracleOptions = Configuration.GetSection(nameof(OralceOptions)).Get<OralceOptions>();
使用选项模式绑定分层配置数据
读取相关配置值的首选方式是使用选项模式。例如使用OralceOptions
型号读取以下配置值:
"OracleOptions": {
"Login": "hr",
"Password": "password"
}
您只需编写下面的代码,它将调用ConfigurationBinder.Bind
将OracleOptions
类绑定到OracleOptions
部分
var oracleOptions = new OracleOptions();
Configuration.GetSection("OracleOptions").Bind(oracleOptions);
ConfigurationBinder.Get<T>
绑定并返回指定的类型。CCD_ 9可能比使用CCD_。以下代码显示了如何将ConfigurationBinder.Get<T>
与OracleOptions类一起使用:
var positionOptions = Configuration.GetSection("OracleOptions").Get<OracleOptions>();