如何解决使用IOption从ASP.NET Core 3.1 Web API中的配置读取connectionString
我正在使用.net core 3.1使用IOption读取连接字符串,但是该值显示为空(以下代码中的settings.Value.ConnectionString)。有人可以帮忙吗?在启动的ConfigureServices中,config部分可以正常运行。但不在控制器中,它显示为空。
public class DatabaseSettings
{
public string ConnectionString {get; set;}
}
services.Configure<DatabaseSettings>(options =>
Configuration.GetSection("ConnectionStrings:ABCDB").Bind(options));
public class DefaultController : ControllerBase
{
private string _connectionString;
public DefaultController(IOptions<DatabaseSettings> settings)
{
_connectionString = settings.Value.ConnectionString;
}
}
解决方法
更改方法并从配置中提取连接字符串并修改选项。
services.Configure<DatabaseSettings>(options => {
string connectionString = Configurations.GetConnectionsString("ABCDB");
options.ConnectionString = connectionString;
});
原始方法没有遵循约定进行绑定,因此没有填充所需的属性。
如果遵循常规方法,则需要重构模型类
为了演示起见,请更改名称。
public class ConnectionStrings {
public string ABCDB { get; set; }
}
使用常规方法可以通过多种方式完成,如上所述,但这是另一个示例
services.Configure<ConnectionStrings>(Configurations.GetConnectionsStrings());
这将被使用
public class DefaultController : ControllerBase {
private string _connectionString;
public DefaultController(IOptions<ConnectionStrings> settings) {
_connectionString = settings.Value.ABCDB;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。