topshelf の下で実行されるサービスとしてインストールされたコンソール アプリがいくつかあります。手動でインストールして実行すると、正常に動作します。ただし、スタートアップの種類が自動に設定されていても、自動的に起動するものはありません。
アプリは次のように構成されます。
HostFactory.Run(x =>
{
x.Service<MyApp>(s =>
{
s.ConstructUsing(name => container.Resolve<MyApp>());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc =>
{
tc.Stop();
container.Dispose();
});
});
x.RunAsLocalSystem();
x.StartAutomatically();
x.EnableServiceRecovery(rc => rc.RestartService(5));
});
アプリは Win 2008 R2 で実行され、管理者として実行されるバッチ ファイルを使用してインストールされます。バッチ ファイルには次のものが含まれます。
app.exe install --sudo
app.exe start
バッチ ファイルを実行した後、サービスは期待どおりに実行されます。ただし、再起動しても停止したままです。
イベント ログは、サービスごとに同じイベントのペアを返します。
イベント 7000: 次のエラーのため、サービスを開始できませんでした: サービスは開始要求または制御要求にタイムリーに応答しませんでした。
イベント 7009: サービスの接続を待機中にタイムアウト (30000 ミリ秒) に達しました。
再起動後にアプリを起動する唯一の方法はapp.exe start
、昇格したコマンド プロンプトから実行することです。
何か案は?