C # Windows Service не отображается как запущенный

1

Я написал небольшую службу Windows на С#, которая должна прослушивать определенный порт и делать что-то с запросом.

Я также написал "Главное":

using System;
using System.ServiceProcess;

namespace AutoDeployService
{
    public static class WindowsServiceController
    {
        private static void Main(string[] args)
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new AutoDeployService() 
            };

            if (Environment.UserInteractive)
            {
                new AutoDeployService().ConsoleRun();
            }
            else
            {
                System.Diagnostics.Debugger.Break();
                ServiceBase.Run(ServicesToRun);
            }
        }
    }
}

Поэтому я могу запустить службу с консоли и без нее. Когда я запускаю программу как Console-Application, она работает нормально!

Если я устанавливаю службу с помощью "InstallUtil.exe", она устанавливается идеально и отображается в списке сервисов. Но когда я пытаюсь запустить сервис, он дает мне примерно через полтора минуты или больше это сообщение:

Служба не ответила на запрос запуска или контроля своевременно.

После того, как я исследовал эту ошибку в www, я обнаружил, что OnStart-Method может занять много времени, теперь мой метод OnStart выглядит так:

        protected override void OnStart(string[] args)
        {
            base.OnStart(args);
            var initializeThread = new Thread(new ThreadStart(Initialize));
            initializeThread.Start();
        }

Поэтому я надеюсь, что кто-нибудь сможет мне помочь.

Приветствую

EDIT: Кажется, что сервис начался после того, как я начал его с servicemanager, но в servicemanager появляется ошибка выше, и ее определение не началось.

Журнал событий:

Имя der fehlerhaften Anwendung: AutoDeployService.exe, Версия: 1.0.0.0, Zeitstempel: 0x5459e290 Название des fehlerhaften Moduls: неизвестно, Версия: 0.0.0.0, Zeitstempel: 0x00000000 Ausnahmecode: 0x00000000 Fehleroffset: 0x0039010b ID des fehlerhaften Prozesses: 0xa0c Startzeit der fehlerhaften Anwendung: 0x01cff8d816b830d8 Pfad der fehlerhaften Anwendung: C:\Users * имя пользователя *\Desktop\AutoDeploy\AutoDeployService\bin\Debug\AutoDeployService.exe Pfad des fehlerhaften Moduls: неизвестно Berichtskennung: 5d636ccf-64cb-11e4-b5d1-0050568bc9b7

РЕДАКТИРОВАТЬ:

Если я запускаю службу, служба, похоже, не попадает в OnStart-Method, потому что он не создает папку.

  • 0
    Проверьте журнал событий Windows для приложений. Также обратите внимание, что, вероятно, лучше проверить, подключен ли отладчик. If (Debugger.IsAttached) System.Diagnostics.Debugger.Break();
  • 0
    @Silvermind Спасибо за ваше быстрое воспроизведение. Сообщение в Eventlog не очень помогает. Пожалуйста, смотрите изменения в моем посте.
Теги:
service
onstart

2 ответа

0
Лучший ответ

Спасибо за помощь.

Я нашел свой erorr с прикреплением Debugger с помощью этой команды:

Debugger.Launch().

Ошибка была в потоке из моего приложения.

1

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

  • 0
    Да, извините, вот что я имею в виду, если я запускаю исполняемый файл из консоли, он работает нормально. Так что ошибка должна быть что-то с сервисом. Благодарю за ваш ответ. Я посмотрел этот урок, но он мне не очень помогает. Мой сервис кажется правильным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню