интересно, если вы, ребята, сталкивались с этим раньше. Я хотел, чтобы grpc server + web api работал в качестве службы Windows, так как он предназначен для длительного процесса. Веб-API в основном только для мониторинга внутренних состояний во время выполнения. Поэтому я создал новый сервис grpc (.net core 3), добавил в рабочий класс, добавил контроллер и т. Д. И использовал Microsoft.Extensions.Hosting. Пакет .WindowsServices nuget для включения службы Windows. Я использовал "sc create binpath = start = auto", чтобы установить его, затем использовал "sc start", чтобы запустить его. Наблюдая файл журнала, я вижу, что он запущен, получая доступ к странице сваггера, я вижу, что он работает нормально.
Я что-то записываю в файл журнала, когда в рабочем классе вызываются StartAsync и StopAsync, и я вижу, что при запуске службы вызывается StartAsync, как и должно быть.
Теперь забавно то, что при перезапуске системы я не вижу, чтобы StopAsync вызывался ..
в DOS, если я использовал dotnet .exe для его запуска, StartAsync - этовызывается, нажав CTRL + C, чтобы остановить его, вызывается StopAsync ... но почему StopAsync не вызывается, когда он работает в качестве службы Windows и система перезапускается? это ошибка в самом пакете nuget службы windwos? или я что-то здесь упускаю?
Забавно, что в классе Startup я даже использовал IHostApplicationLifetime для перехвата ApplicationStarting, ApplicationStopping, но опять-таки вызывается start, но остановка не вызывается .. почему?
Может кто-нибудь просветить меня?