この問題は広く議論されているようですが、私の特定のケースでは解決策を見つけるのに問題があります。
私のサービスは、アカウントで実行されるように設定されていLocal System
ます。Windows 7 SP1 (64 ビット)がインストールされた最初のマシンでは、すべてが期待どおりに動作します。しかし、 Windows Server 2008 R2 SP1 (64 ビット)を搭載した 2 台目のマシンでサービスを開始しようとした直後に、1 秒も経過せず、次の厄介なエラーに直面しています。
Windows could not start the ProService service on Local Computer
Error 1053: The service did not respond to the start or control request in a timely fashion
にSystem Log
は 2 つのエントリが表示されます。
The ProService service failed to start due to the following error:
The service did not respond to the start or control request in a timely fashion.
と:
A timeout was reached (30000 milliseconds) while waiting for the ProService service to connect.
実装は次のようになります。
Program.cs:
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
ServiceBase.Run(new ServiceBase[] { new ProService() });
}
static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
if (e != null && e.ExceptionObject != null)
{
Logger.Record(e.ExceptionObject);
}
}
ProService.cs:
public ProService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
try
{
RequestAdditionalTime(10000);
FireStarter.Instance.Execute();
}
catch (Exception e)
{
Logger.Record(e);
throw;
}
}
メソッドは新しいスレッドを開始するOnStart
だけなので、実行にほとんど時間がかかりません。RequestAdditionalTime
念のため、この問題を問題の原因として拒否するためにステートメントを使用しました。さらに、ご覧のとおり、すべての例外を処理していますが、起動時にカスタム サービス イベント ログに例外が書き込まれることはありません (ところで、ログは最初の win7 マシンで動作しています)。何が起こっているのかを調査する方法は?