Hospedar um conector do Microsoft Graph como um serviço Windows
Este artigo descreve como hospedar seu conector do Microsoft Graph como um serviço windows para que ele seja executado continuamente.
O executável do conector deve estar sempre em execução para que a plataforma do conector possa fazer solicitações durante rastreamentos ou para executar quaisquer operações de gerenciamento de conexão. O executável não consumirá ativamente nenhum recurso, exceto para os momentos em que o conector está sendo rastreado. O restante do tempo, o executável do conector ficará apenas ocioso.
Uma maneira de fazer o conector executável ser executado continuamente é hospedá-lo como um serviço windows. Se o executável for registrado como um serviço Windows, o sistema operacional cuidará de iniciar o processo e reiniciá-lo se o sistema falhar.
Use as seguintes etapas para hospedar o conector como um serviço windows:
Clique com o botão direito do mouse na solução que contém o projeto do conector personalizado e selecione Adicionar>Novo projeto.
Pesquisa para o modelo de serviço do Trabalho, selecione-o e escolha Avançar.
Nomeie o projeto CustomConnectorWorkerService e escolha Avançar.
Escolha .NET Core 3.1 como a estrutura de destino e escolha Criar.
Clique com o botão direito do mouse no projeto de serviço do trabalhador e escolha Abrir no Terminal.
Execute os seguintes comandos no terminal.
dotnet add package Microsoft.Extensions.Hosting --version 6.0.0 dotnet add package Microsoft.Extensions.Hosting.WindowsServices --version 6.0.0
Clique com o botão direito do mouse no projeto de serviço de trabalho e selecione Adicionar>Referência de Projeto.
Selecione o projeto CustomConnector e escolha OK.
Substitua o código no arquivo Worker.cs pelo código a seguir.
using CustomConnector.Server; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System.Threading; using System.Threading.Tasks; namespace CustomConnectorWorkerService { public class Worker : BackgroundService { public Worker(ILogger<Worker> logger) { var server = new ConnectorServer(); server.StartLogger(); server.Start(); } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { await Task.Delay(1000); } } } }
Substitua o código no arquivo Program.cs pelo código a seguir.
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace CustomConnectorWorkerService { public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }); } }
Selecione a configuração de versão e crie o projeto CustomConnectorWorkerService .
Execute o script a seguir para registrar e iniciar o conector personalizado como serviço Windows.
$ServiceName = "CustomConnector" $ExePath = "<Full path of CustomConnectorWorkerService.exe from above build>" # Create a service with the given executable. This just creates an entry for this service. sc.exe create $ServiceName binPath="$ExePath" start="delayed-auto" # Set the service to run under a virtual account NT Service\<ServiceName>. Optionally skip this step to run the service under LOCAL SYSTEM account sc.exe config $ServiceName obj="NT Service\$ServiceName" # Restarts service after 5 minutes on first, second and third failures and resets error after 1 day sc.exe failureflag $ServiceName 1 sc.exe failure $ServiceName reset= 86400 actions= restart/300000/restart/300000/restart/300000 sc.exe start $ServiceName
Observação
- O nome do serviço deve ser exclusivo para cada conector exclusivo.
- Para obter mais informações sobre contas de usuário de serviço, consulte Contas de Usuário do Serviço.
Abra services.msc e verifique se o serviço está em execução.
Para obter problemas com a hospedagem do conector, consulte Solução de problemas de erros.