У меня есть какое-то наследие, которое выглядит идентично верхнему ответу в Хостинг ASP. NET Ядро как Windows Сервис .
Мой вопрос выходит за рамки - при остановке сервис; OnStopping правильно вызывается - как я могу позволить токену отмены или любому другому типу сигнала отсюда распространяться на реальные сервисы WebHost?
var hostBuilder = new WebHostBuilder().UseKestrel(options =>
{
options.ConfigureEndpoints();
})
.UseConfiguration(config)
.UseStartup<Startup>()
.UseSerilog((hostingContext, loggerConfiguration) =>
loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration))
.UseContentRoot(AppDomain.CurrentDomain.BaseDirectory);
if (Debugger.IsAttached || args.ToList()
.Contains("console"))
{
var host = hostBuilder.Build();
host.Run();
}
else
{
var host = hostBuilder.UseContentRoot(pathToContentRoot)
.Build();
host.RunAsCustomService();
}
Мне нужен сигнал выключения для распространения и быть доступным для разных частей хоста? Я не очень привык к asp. net, и этот MVC бизнес чрезвычайно раздражает - он так много скрывает от разработчика !!
Я не могу за всю жизнь понять, как разделить токен отмены между классом Startup и «Программой» (где находится основная точка входа, как и ссылка на публикацию).
В идеале я хотел бы сделать что-то вроде:
var myCancellationToken = new CancellationToken();
Startup.SetCancellationToken(myCancellationToken);
host.RunAsCustomService(myCancellationToken);
Но я не могу получить доступ к автозагрузке.
Похоже, не так много ответов, объясняющих, как сигналы могут взаимодействовать с внутренними частями этого WebHost и MVC конвейера. Что это значит?