Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como hospedar seu conector do Microsoft Graph como um serviço do 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 a ele durante rastreamentos ou para executar operações de gerenciamento de conexões. O executável não consumirá ativamente nenhum recurso, exceto nos momentos em que o conector estiver sendo rastreado. No resto do tempo, o executável do conector ficará ocioso.
Uma maneira de fazer com que o executável do conector seja executado continuamente é hospedá-lo como um serviço do Windows. Se o executável estiver registrado como um serviço do Windows, o sistema operacional se encarregará de iniciar o processo e reiniciá-lo se o sistema falhar.
Use as etapas a seguir para hospedar o conector como um serviço do 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.
Pesquise o modelo de serviço de trabalho , selecione-o e escolha Avançar.
Nomeie o projeto como CustomConnectorWorkerService e escolha Avançar.
Escolha o .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 de 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.0Clique com o botão direito do mouse no projeto de serviço de trabalhador 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 compile o projeto CustomConnectorWorkerService .
Execute o script a seguir para registrar e iniciar o conector personalizado como serviço do 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 $ServiceNameObservação
- O nome do serviço deve ser exclusivo para cada conector exclusivo.
- Para obter mais informações sobre contas de usuário do serviço, consulte Contas de usuário do serviço.
Abra services.msc e verifique se o serviço está em execução.
Para quaisquer problemas com a hospedagem do conector, consulte Solução de problemas de erros.