dotnet core(.NET 5も含む)のWorker ServiceをWindowsのServiceとして動作させる例を見つけたのでメモ。
Worker Serviceは下記コマンドで作成する。
dotnet new worker -o <プロジェクト名>通常は、上記によって作成されたWorker.csに処理を付け加えればOKなのだが、Windows Service化させたい場合は、プロジェクトにMicrosoft.Extensions.Hosting.WindowsServicesパッケージを追加する必要がある。
dotnet add <プロジェクト名> package Microsoft.Extensions.Hosting.WindowsServicesさらに、Program.cs中のCreateHostBuilderに.UseWindowsService()を追加する。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
}後は、Worker.csに処理を追加して、デバッグ後、下記コマンドでサービス登録を行う。(これはWindowsのコマンド)
sc create <サービス名> binPath= 実行ファイルパス [オプション...]登録が済めば、MMCコンソールの「コンピューターの管理」-「サービスとアプリケーション」-「サービス」からも起動・停止や設定変更が可能。
単純なサービスの開始や停止は下記コマンドでも操作可能。
sc start <サービス名>
sc stop <サービス名>.NET Framework時代のサービス作成より楽だね。




Users Today : 6
Users Yesterday : 47
Users Last 7 days : 282
Users Last 30 days : 907
Users This Month : 579
Users This Year : 5693
Total Users : 100208
Views Today : 7
Views Yesterday : 51
Views Last 7 days : 328
Views Last 30 days : 1066
Views This Month : 664
Views This Year : 6828
Total views : 139274
Who's Online : 1
ピンバック: Linuxのsystemdでworkerアプリを動かす | 元技術者のぶーろぐ