Aaa*_*aaa 5 c# configuration .net-core
我有一个工作者服务 ind dotnet core 3.1:
程序.cs:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false)
.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
var configuration = builder.Build();
services.AddOptions();
// Version 1
services.Configure<A>(configuration);
// Version 2
//services.Configure<A>(o => configuration.GetSection("PollingSettings").Bind(o));
services.AddHostedService<Worker>();
})
.UseWindowsService();
}
Run Code Online (Sandbox Code Playgroud)
appsettings.Development.json:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"A": {
"option1": "value1_from_json",
"option2": -1,
"BSettings": [
{
"Option1": "xxx",
"Option2": 1
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
A.cs:
public class A
{
public A()
{
Option1 = "value1_from_ctor";
BSettings = new List<B>();
}
public string Option1 { get; set; }
public int Option2 { get; set; } = 5;
public List<B> BSettings { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
B.cs:
public class B
{
public string Option1 { get; set; }
public int Option2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
版本 1:当我注入IOptions<A>Worker 类时,我从 ctor 中获取默认值,尽管它是这样记录的: https: //learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?查看=aspnetcore-3.1
版本 2:根 Option1 和 Option2 从 appsettings 填充,但 BSettings 列表默认为空。
我有什么错吗?
| 归档时间: |
|
| 查看次数: |
4616 次 |
| 最近记录: |