如何使用配置.Get()方法是否正确



我有这个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.BindOracleOptions类绑定到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>();

最新更新