Microsoft Graph コネクタを Windows サービスとしてホストする
この記事では、Microsoft Graph コネクタを Windows サービスとしてホストして継続的に実行する方法について説明します。
コネクタプラットフォームがクロール中に要求を行ったり、接続管理操作を実行したりできるように、コネクタ実行可能ファイルは常に実行されている必要があります。 実行可能ファイルは、コネクタがクロールされている時間を除き、リソースをアクティブに使用しません。 残りの時間では、コネクタ実行可能ファイルはアイドル状態になります。
コネクタの実行可能ファイルを継続的に実行する方法の 1 つは、Windows サービスとしてホストすることです。 実行可能ファイルが Windows サービスとして登録されている場合、オペレーティング システムはプロセスを開始し、システムがクラッシュした場合に再起動します。
コネクタを Windows サービスとしてホストするには、次の手順に従います。
カスタム コネクタ プロジェクトを含むソリューションを右クリックし、[新しいプロジェクトの追加]> を選択します。
Worker サービス テンプレートのSearchを選択し、[次へ] を選択します。
プロジェクトに 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 プロジェクトを選択し、[OK] を選択します。
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 を開き、サービスが実行されていることを確認します。
コネクタのホストに関する問題については、「 エラーのトラブルシューティング」を参照してください。