我一直在寻找有关阅读.Net Core 3中的appsettings.json 的许多教程和SO问题(例如App Settings .Net Core),在处理Worker服务时,我找不到任何有关操作方法的指针。没有启动方法。相反,我有一个带有main方法的Program.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) =>
{
services.AddHostedService<Worker>();
});
}
如何从.Net Core 3的Worker服务项目中的appsettings.json文件读取?
我添加了对使用.Net v4.8和另一个项目创建的自定义WCF客户端的引用,该项目仅在整个解决方案之间共享所有Busines域对象。我的解决方案主要是.Net v4.8,我想使用Worker Service。客户端项目通过代码在内部创建WCF客户端,因此所有绑定和端点都是可配置的。如果这是一个.Net v4.8项目,则将以下内容添加到app.config中:
<appSettings>
...
<add key="AminServiceUri" value="http://localhost:45108/ServiceHost/v1/AminService.svc" />
<add key="BillServiceUri" value="http://localhost:45108/ServiceHost/v1/BillService.svc" />
<add key="CustomerServiceUri" value="http://localhost:45108/ServiceHost/v1/CustomerService.svc" />
<add key="EpayServiceUri" value="http://localhost:45108/ServiceHost/v1/EpayService.svc" />
<add key="FinanceServiceUri" value="http://localhost:45108/ServiceHost/v1/FinanceService.svc" />
<add key="GrpServiceUri" value="http://localhost:45108/ServiceHost/v1/GrpService.svc" />
<add key="MetaServiceUri" value="http://localhost:45108/ServiceHost/v1/MetaService.svc" />
<add key="ReportServiceUri" value="http://localhost:45108/ServiceHost/v1/ReportService.svc" />
<add key="ServiceInfoServiceUri" value="http://localhost:45108/ServiceHost/v1/ServiceInfoService.svc" />
<add key="UsersServiceUri" value="http://localhost:45108/ServiceHost/v1/UsersService.svc" />
...
<add key="ExcessiveLogging" value="false" />
...
</appSettings>
现在,我需要这些设置为新的JSON格式并读取它们。
编辑
这是一个新项目。工人没有做任何事情:
public class Worker : BackgroundService
{
private readonly ILogger<Worker> logger;
public Worker(ILogger<Worker> logger)
{
this.logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(5000, stoppingToken);
}
}
}
这是我如何获得此项目类型的方法: