我正在尝试从自定义配置源绑定模型,但不会绑定属性,我的类是:
public class Secrets
{
public string DbConnectionString { get; set; }
}
我启动时的代码是这样的:
var c = Configuration.GetSection("AWSSecrets").Get<Secrets>();
但是,如果我这样做,DBConnectionString始终为null
var config = new Secrets();
config.DbConnectionString = Configuration.GetValue<string>("AWSSecrets:dbConnectionString");
然后它挑选出属性,知道为什么我的属性不会自动绑定吗?
答案 0 :(得分:0)
您需要像这样Get
来代替Bind
var secrets = new Secrets();
Configuration.GetSection("AWSSecrets").Bind(secrets);
要访问您的DbConnectionString
,只需执行secrets.DbConnectionString
。
您也可以在startup
中执行此操作,并根据需要注入构造函数。
services.Configure<Secrets>(Configuration.GetSection("AWSSecrets"));
答案 1 :(得分:0)
如果您的应用设置如下:
{
"AWSSecrets":{
"DbConnectionString":""
}
}
首先在启动时注入模型。
services.Configure<Secrets>(Configuration.GetSection("AWSSecrets"));
并使用Ioptions在任何地方访问它。
private readonly IOptions<Secrets> _secrets;
public YourClassContructor(IOptions<Secrets> secrets)
{
_secrets=secrets;
string conStr =_secrets.value.DbConnectionString;
}
确保正确注入了您的依赖项。另外,您还需要具有Microsoft.Extensions.Options.ConfigurationExtensions,可以从程序包管理器进行安装。