У меня проблемы с размещением grpc
сервера в службе windows. Если есть кто-нибудь, кто знает, как решить эту проблему с помощью недавнего ядра 3.1 (generi c host builder вместо предыдущего как pnet core host builder et c.), Я был бы признателен Это. Спасибо.
Что сделано:
- Пример приложения
grpc
(greeter
) был принят в желаемое состояние (изменение * 1013) *, добавить обработчики, настроить клиента). Microsoft.Extensions.Hosting.WindowsServices
пакет был установлен. UseWindowsService()
добавлен в цепочку IHostBuilder
. - Приложение установлено как windows служба (например, через
sc create
).
Каково реальное поведение:
- Приложение работает должным образом (связь клиент / сервер) при использовании в качестве простого
exe
без сервисные дополнения. - Сервис не реагирует на команды контроллера сервиса (он просто не запускается).
- Когда раздел
ConfigureWebHostDefaults
удален из Program.cs
, сервис реагирует на команды sc
(хотя это бесполезно).
Каково ожидаемое поведение:
- Приложение может работать
grpc
сервер также должен быть размещен в сервисе windows.
Соответствующий код:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
#if false
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(kestrelOptions =>
{
kestrelOptions.ListenAnyIP(1234, listenOptions =>
{
listenOptions.UseHttps(CertFilename, CertPassword);
});
})
.UseStartup<Startup>();
})
#endif
.UseContentRoot(AppContext.BaseDirectory) // should be just redundant
.UseWindowsService() // lifetime, content-root, default-hosted-service
;