微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用IOption从ASP.NET Core 3.1 Web API中的配置读取connectionString

如何解决使用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 举报,一经查实,本站将立刻删除。