Служба Windows останавливается автоматически - PullRequest
29 голосов
/ 12 февраля 2009

Я создал службу Windows и позволил ей работать автоматически и под учетной записью localsystem; при запуске службы она запускает для меня это сообщение, а затем останавливается

Служба [имя службы] на локальном компьютере запускается, а затем останавливается. Некоторые службы автоматически останавливаются, если они не используются другими службами или программами.

В чем проблема и как ее решить?

Ответы [ 9 ]

38 голосов
/ 12 февраля 2009

Либо вы не запускаете какие-либо потоки в методе OnStart для выполнения работы, либо в вашем методе OnStart возникло исключение.

Если сгенерировано исключение, оно появится в журнале событий Windows. Журнал событий Windows - хорошее место для запуска в любом случае.

Обычно метод OnStart выглядит следующим образом:

Thread _thread;

protected override void OnStart(string[] args)
{
    // Comment in to debug
    // Debugger.Break()

    // Do initial setup and initialization
    Setup();

    // Kick off a thread to do work
    _thread = new Thread(new MyClass().MyMethod)
    _thread.Start();

    // Exit this method to indicate the service has started
}
6 голосов
/ 12 февраля 2009

Это конкретное сообщение об ошибке означает, что оно говорит - что ваша служба запустила , но затем довольно скоро вышла из по какой-то причине. Хорошая новость заключается в том, что ваш сервис на самом деле выполняет что-то , поэтому вы настроили исполняемый файл и правильно работали как сервис.

Однажды начавшись, по какой-то причине выходит. Вам нужно выяснить, почему это так. Добавьте некоторую отладку, чтобы сообщить вам, что она работает и известны случаи выхода. Если это не выявляет проблему, добавьте отладку, чтобы вы знали, что она все еще работает и работает в обратном направлении с момента остановки.

3 голосов
/ 26 марта 2010

У меня была похожая проблема, возникшая , потому что мои журналы событий были заполнены и службе не удалось записать их. Таким образом, отладку невозможно было искать в окне просмотра событий. Я поставил try / catch и выгрузил исключение в файл. Мне приходилось менять настройки в моих журналах, чтобы они заполнялись по мере необходимости, а не каждые 7 дней, и это позволяло запускать службы.

Конечно, корень проблемы для меня в том, что у меня проблема с драйвером nVidia, которая заполняет мои журналы событий, и теперь я, вероятно, бьюсь на диске, но это другая проблема.

3 голосов
/ 12 февраля 2009

Вы отслеживаете какую-либо отладочную информацию? Скорее всего, исключение выдается во время вашей инициализации. Я бы проследил все ваши исключения и использовал бы Debugview для их просмотра.

1 голос
/ 29 сентября 2011

Возможно, вам нужно запустить службу как Локальная системная учетная запись . Смотрите это сообщение от Srinivas Ganaparthi .

1 голос
/ 11 августа 2011

У меня была такая же проблема при запуске JBoss, затем я изменил переменную JAVA_HOME, она работала для меня Это была версия JBoss, которая не поддерживает 1.6, она поддерживает 1.5.

0 голосов
/ 08 мая 2019

В моем случае, метод в моем сервисе вызывался рекурсивно (так как условие завершения не было истинным), и по истечении определенного времени моя служба была остановлена.

0 голосов
/ 20 ноября 2013

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

Если вам когда-нибудь понадобится, например, мне, чтобы прочитать некоторые файлы из каталога, где находится Windows Service .exe, проверьте эту тему: Получение полного пути для службы Windows

0 голосов
/ 29 июня 2011

Для меня та же проблема возникла из-за неправильной настройки в моем файле app.config. Я изменил настройку, и проблема решена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...