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 alojar o conector do Microsoft Graph como um serviço Windows para que seja executado continuamente.
O executável do conector tem de estar sempre em execução para que a plataforma do conector possa efetuar pedidos durante pesquisas ou para realizar quaisquer operações de gestão de ligações. O executável não consumirá ativamente quaisquer recursos, exceto nas horas em que o conector está a ser pesquisado. O resto do tempo, o executável do conector ficará inativo.
Uma forma de fazer com que o conector seja executado continuamente é alojá-lo como um serviço Windows. Se o executável estiver registado como um serviço Windows, o sistema operativo tratará de iniciar o processo e reiniciá-lo se o sistema falhar.
Utilize os seguintes passos para alojar o conector como um serviço Windows:
Clique com o botão direito do rato na solução que contém o projeto do conector personalizado e selecione Adicionar>Novo projeto.
Procure o modelo de serviço De trabalho , selecione-o e, em seguida, selecione Seguinte.
Atribua o nome CustomConnectorWorkerService ao projeto e selecione Seguinte.
Escolha .NET Core 3.1 como a arquitetura de destino e selecione Criar.
Clique com o botão direito do rato no projeto de serviço de trabalho e selecione 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 rato no projeto de serviço de trabalho e selecione Adicionar>Referência do Projeto.
Selecione o projeto CustomConnector e selecione OK.
Substitua o código no ficheiro Worker.cs pelo seguinte código.
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 ficheiro Program.cs pelo seguinte código.
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 da versão e crie o projeto CustomConnectorWorkerService .
Execute o seguinte script para registar 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 $ServiceNameObservação
- O nome do serviço tem de ser exclusivo para cada conector exclusivo.
- Para obter mais informações sobre contas de utilizador de serviço, veja Contas de Utilizador de Serviço.
Abra services.msc e verifique se o serviço está em execução.
Para quaisquer problemas com o alojamento do conector, veja Resolução de problemas de erros.