Я написал. net core 3 workerservice, в котором также есть webapi, встроенный в тот же проект - цель состоит в том, чтобы позволить размещенному работнику serviceservice представить webapi healthcheck, который можно запрашивать для предоставления информации о состоянии службы работника. Мы используем общий шаблон для добавления вызовов проверок работоспособности ко всем нашим микросервисам webapi.
Работающий сервис и webapi прекрасно работают сами по себе, но я не могу понять, как внедрить общий объект в две службы, которые будут использоваться для передачи данные назад и вперед между двумя.
Я предполагаю, что мне нужно создать объект статуса в методе CreateHostBuilder класса Program и вставить его в оба, но не могу найти подходящих методов для его передачи.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
// HealthCheck WebAPI
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseKestrel();
webBuilder.UseContentRoot(Directory.GetCurrentDirectory());
webBuilder.UseIISIntegration();
webBuilder.UseStartup<Startup>();
})
.ConfigureHostConfiguration(configHost =>
{
configHost.SetBasePath(Directory.GetCurrentDirectory());
configHost.AddJsonFile("hosting.json", optional: false);
})
// WorkerService
.ConfigureAppConfiguration((hostContext, config) =>
{
config
.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName.ToLower()}.json", optional: false);
config.AddEnvironmentVariables();
})
.ConfigureServices((hostContext, services) =>
{
services.AddOptions();
services.AddHostedService<Worker>();
});
Объект состояния может быть чем-то вроде ...
public class StatusInfo
{
public DateTime LastRun { get; set; }
public int LastAdded { get; set; }
public int LastUpdated { get; set; }
}
Кто-нибудь может мне помочь, пожалуйста?