在我的Asp.net Core 2.0应用程序中,我试图实现一种设计,如@Nkosi here所建议的那样,在类库项目中不对连接字符串使用IConfiguration构造函数依赖项。
在这种方法中,无法像下面的代码行那样将配置实例绑定到类型的新实例
public void ConfigureServices(IServiceCollection services) {
//...
var settings = Configuration
.GetSection("ConnectionStrings:OdeToFood")
.Get<ConnectionSetings>();
//...verify settings (if needed)
services.AddSingleton(settings);
}
public class ConnectionSetings
{
public string Name { get; set; }
}
我可以看到Configuration.GetSection("ConnectionStrings:OdeToFood")
返回了“ Key”,“ Path”和“ Value”属性,但是它无法进行绑定并且在设置中返回null。
我看到过类似的问题,其中ppl推荐了以下解决方案,但没有一个对我有用。
services.Configure<ConnectionsSetings>(Configuration.GetSection("ConnectionStrings:OdeToFood"));
还
Configuration
.GetSection("ConnectionStrings:OdeToFood").Bind<>
以下是appsettings.json
{
"Greeting": "Hello!!!",
"ConnectionStrings": {
"OdeToFood": "Server=(localdb)\\MSSQLLocalDB;Database=OdeToFood;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
以下是Configuration.GetSection输出的即时窗口屏幕快照,在其中我可以看到键,路径和值
从下面的屏幕截图中可以看到设置变量为空
答案 0 :(得分:2)
我不确定要使用提供的代码实现什么,但是为了获取值而不是null,您应该在appsettings.json中包含以下部分:
{
...
"ConnectionStrings": {
"OdeToFood": {
"Name": "someConncetionString"
}
},
...
}
然后下面的代码将返回对象:
var settings = Configuration
.GetSection("ConnectionStrings:OdeToFood")
.Get<ConnectionSetings>();