2009-12-03 2 views
0

Я разработал простую службу Windows на C# в соответствии с этой статьей.Обслуживание не может быть запущено

http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

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

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

Просьба помочь.

+1

Почтовый индекс для OnStart –

ответ

1

Я изложил here метод, который мы используем для отладки наших служб Windows. Возможно, это поможет вам проследить за ошибкой. В основном это звучит, как некоторая ошибка возникает при попытке выполнить метод OnStart.

+0

Спасибо всем. В методе OnStart произошла ошибка! – bdhar

0

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

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

1

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

Иногда вы можете найти причину в средстве просмотра событий, но, к сожалению, много времени, когда пользователь, которому вы пользуетесь службой, поскольку на самом деле не имеет доступа к журнальной ошибке. Простая вещь, которую нужно сделать, если вы находитесь в среде разработчиков, заключается в том, чтобы временно предоставить службе учетную запись администратора, во-первых, потому что она скажет вам, вызвана ли авария отсутствием доступа (потому что она будет работать), а во-вторых если он не позволит ему писать в средство просмотра событий. Обязательно возьмите доступ администратора f после того, как вы его исправите, но причините долгосрочный ущерб, который может быть очень опасным.

+0

Фактически услуга выполняется с привилегией локальной учетной записи системы. Это действительно началось и остановилось в первый раз, когда я попытался. А также он регистрировал события. Но когда я пытаюсь запустить его во второй раз, это не так! – bdhar

0

Если служба находится на вашей машине разработки, вы должны иметь возможность отлаживать отладчик Visual Studio при ее запуске, чтобы вы могли определить, что-либо вызывает его сбой. Он включает в себя немного редактирования реестра, как описано здесь: http://blogs.msdn.com/greggm/archive/2005/02/21/377663.aspx

0

Похоже, что ваша основная нить по какой-то причине умирает. Поместите вызов System.Diagnostics.Debugger.Break() в код запуска вашего сервиса, например главную точку входа, конструктор службы или метод OnStart(). Когда вы запускаете службу из MMC служб, вам будет предложено ввести сеанс отладки. После того, как вы в Visual Studio, откройте диалоговое окно «Исключения» (из меню «Отладка») и установите флажки в столбце «Бросок». Затем отлаживайтесь оттуда, чтобы найти проблему.

Смежные вопросы