Этот вопрос, как представляется, широко обсуждается, но у меня проблемы с поиском решения в моем конкретном случае.
Моя служба настроена для работы под учетной записью Local System
. На моей первой машине с установленной Windows 7 SP1 (64-разрядная версия) все работает так, как ожидалось. Но сразу после того, как я попытаюсь запустить службу на своей второй машине с Windows Server 2008 R2 SP1 (64-разрядная версия), даже не второй проход, и я столкнулся с этой досадной ошибкой:
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). Как узнать, что происходит?