Размещение соединителя Microsoft Graph в качестве службы Windows
В этой статье описывается размещение соединителя Microsoft Graph в качестве службы Windows, чтобы он работал непрерывно.
Исполняемый файл соединителя должен быть всегда запущен, чтобы платформа соединителя могла выполнять запросы к нему во время обхода контента или выполнения любых операций управления подключением. Исполняемый файл не будет активно потреблять ресурсы, за исключением случаев обхода соединителя. В остальное время исполняемый файл соединителя просто бездействует.
Один из способов непрерывного выполнения соединителя — разместить его в качестве службы Windows. Если исполняемый файл зарегистрирован как служба Windows, операционная система будет выполнять запуск процесса и перезапускать его в случае сбоя системы.
Чтобы разместить соединитель в качестве службы Windows, выполните следующие действия.
Щелкните правой кнопкой мыши решение, содержащее проект пользовательского соединителя, и выберите Добавить>новый проект.
Поиск шаблон рабочей службы, выберите его и нажмите кнопку Далее.
Назовите проект CustomConnectorWorkerService и нажмите кнопку Далее.
Выберите .NET Core 3.1 в качестве целевой платформы и нажмите кнопку Создать.
Щелкните правой кнопкой мыши проект рабочей службы и выберите Открыть в терминале.
Выполните следующие команды в терминале.
dotnet add package Microsoft.Extensions.Hosting --version 6.0.0 dotnet add package Microsoft.Extensions.Hosting.WindowsServices --version 6.0.0
Щелкните правой кнопкой мыши проект рабочей службы и выберите Добавить>ссылку на проект.
Выберите проект CustomConnector и нажмите кнопку ОК.
Замените код в файле Worker.cs следующим кодом.
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); } } } }
Замените код в файле Program.cs следующим кодом.
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>(); }); } }
Выберите конфигурацию выпуска и выполните сборку проекта CustomConnectorWorkerService .
Выполните следующий скрипт, чтобы зарегистрировать и запустить настраиваемый соединитель в качестве службы 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
Примечание.
- Имя службы должно быть уникальным для каждого уникального соединителя.
- Дополнительные сведения об учетных записях пользователей службы см. в разделе Учетные записи пользователей службы.
Откройте services.msc и убедитесь, что служба запущена.
Сведения о проблемах с размещением соединителя см. в статье Устранение ошибок.