Member 10530640 Ответов: 2

Как исправить Windows ошибка 1053 служба?


Ошибка 1053: служба не ответила на запрос запуска или управления своевременно - при попытке запустить серверную службу.



как исправить вышеуказанную ошибку

Что я уже пробовал:

Я увеличил тайм-аут в реестре, но он не работает

2 Ответов

Рейтинг:
2

F-ES Sitecore

Это означает, что ваша служба занимает слишком много времени, чтобы начать. Вы не опубликовали никакого кода, так что это невозможно сказать, но я собираюсь предположить, что у вас есть цикл сна в событии запуска вашего сервиса. Если это так, то вы пишете службу не так, событие start должно только инициализировать его и создать поток, на котором выполняется фактическая "работа", а затем событие start должно быть завершено. Погуглите, как вы пишете сервис, и вы найдете стартовые шаблоны.

Если это не проблема, вам нужно будет опубликовать какой-то соответствующий код.


Member 10530640

защищенное переопределение void OnStart(string[] args)
{
//Система.Диагностика.Отладчик.Запуск();
Коммунальные услуги.OverrideAppName = " SpanService";
Управление.LoadConfiguration();

Регистрация.LogUnitInfo("период", новый { метод onStart = "начала" }, "SpanWindowsService: методы onStart называется");

ServiceWorkerThread();

Регистрация.LogUnitInfo("период", новый { метод onStart = "начала" }, "SpanWindowsService: методы onStart: SpanService начал.");
}

///


/// Метод выполняет основную функцию сервиса. Он бежит дальше
/// рабочий поток пула потоков.
///

общественного недействительными ServiceWorkerThread()
{
Регистрация.LogUnitInfo ("Span", new { ServiceWorkerThread = "ServiceWorkerThreadStart"}, " SpanWindowsService: ServiceWorkerThread вызывается");

пробовать
{
if (spanServiceHost != null)
{
spanServiceHost.Рядом();
Регистрация.LogUnitInfo("период", новый { SpanServiceHost = "SpanServiceHost" }, "SpanWindowsService: ServiceWorkerThread: SpanService состоялось закрытое.");
}

Task spanTask = новая задача (SpanFileProcessor);
spanTask.Начать();
спантаск.Подождите();
если (спантаск.IsCompleted)
{
Регистрация.LogUnitInfo ("Span", new { SpanTask = "SpanTaskComplete"}, " SpanWindowsService: ServiceWorkerThread: spanservice task ic завершена");
spanTask.Распоряжаться();

Регистрация.LogUnitInfo ("Span", new { SpanServiceHost = "SpanServiceHostStart", ServiceHostStartAt = DateTime.Теперь }, " spanwindowsservice: ServiceWorkerThread: запущен хостинг SpanService");
spanServiceHost = новый ServiceHost(typeof(SpanService));
новый SpanService();
spanServiceHost.Открыть();

Регистрация.LogUnitInfo ("Span", new { SpanServiceHosted = "SpanServiceHosted", ServiceHostedAt = DateTime.Теперь }, " SpanWindowsService: ServiceWorkerThread: SpanService успешно размещен.");
}
ещё
{
Регистрация.LogUnitInfo ("Span", new { SpanTask = "SpanTaskInComplete", TaskStatus = spanTask.IsCompleted }, " SpanWindowsService: ServiceWorkerThread: задача Span не завершена.");
}

Регистрация.LogUnitInfo ("Span", new { ServiceWorkerThread = "ServiceWorkerThreadEnd"}, " SpanWindowsService: ServiceWorkerThread finished");
}
поймать (исключение бывший)
{
Регистрация.LogUnitInfo("период", новый { ошибка = ех.Сообщение, исключение = е }, "SpanWindowsService: ServiceWorkerThread удалось");
}
}

F-ES Sitecore

Вы выполняете работу над отдельной задачей, что хорошо, но после запуска задачи вы ждете ее завершения. Таким образом, в основном ваш стартовый код не просто запускает задачу, но и эффективно выполняет ее. Событие start должно завершиться в течение определенного периода времени, на самом деле это просто инициализация вашего кода, Вы не должны делать над ним никакой работы. Поэтому вместо того, чтобы ждать завершения задачи, вы должны обрабатывать окончание задачи с помощью события.

Рейтинг:
1

EHarfmann

Вы также можете поместить свой реальный код запуска в это событие запуска. Ваша обработка должна быть в отдельном потоке. Ваш основной поток просто реагирует на события. В случае запуска сон не является "плохой" вещью, если он короткий и в цикле отвечает менеджеру службы, что вы все еще работаете над ним. (Очевидно, что сон должен быть тайм-АУ на семафоре, который сигнализируется, когда запуск завершен.)

Возможность снова состоит в том, чтобы ваша обработка была выполнена в другом потоке, и событие start просто ответило: "Да... got'R done!".