我正在尝试在我的 ASP.NET Core 2.1 应用程序中设置强类型配置设置。
在我的 startup.cs 文件中,我有以下代码:
services.Configure<AzureStorageConfig>(Configuration.GetSection("AzureStorageConfig"));
我的设置类 AzureStorageConfig 如下所示:
public class AzureStorageConfig
{
public string StorageConnectionString { get; internal set; }
}
我的 appSetting.json:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"AzureStorageConfig": {
"StorageConnectionString": "UseDevelopmentStorage=true"
}
}
当我运行代码时,我的 AzureStorageConfig.StorageConnectionString 始终为空。
如果我在 startup.cs 文件中设置断点,我可以看到设置在那里:
但是当注入(inject) AzureStorageConfig 时,它是空的。
public class RestaurantService : IRestaurantService
{
private AzureStorageConfig m_Config;
public RestaurantService(IOptions<AzureStorageConfig> config)
{
m_Config = config.Value;
}
}
我想我拥有此处描述的所有内容:https://weblog.west-wind.com/posts/2016/May/23/Strongly-Typed-Configuration-Settings-in-ASPNET-Core
最佳答案
您的 StorageConnectionString
属性有一个 internal
setter,但这需要是 public
以便 Binder 在尝试时使用它从您的 Configuration
实例绑定(bind):
public class AzureStorageConfig
{
public string StorageConnectionString { get; set; }
}
关于c# - 未映射强类型配置设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52766326/