Подтвердить что ты не робот

Запуск службы Windows в качестве консольного приложения

Я хочу отладить службу Windows, но появляется сообщение об ошибке

Не удается запустить службу из команды линии или отладчика. Служба Windows должны быть установлены с использованием installutil.exe, а затем проводник сервера, службы Windows Административные средства или начало NET команда.

Я действительно не знаю об этой ошибке.....

введите описание изображения здесь

4b9b3361

Ответ 1

Прежде чем запустить службу Windows, она должна быть "установлена" сначала с помощью installutil. EG:

C:\installutil -i c:\path\to\project\debug\service.exe

Затем вы можете открыть список Служб, чтобы запустить его. EG:

  • Щелкните правой кнопкой мыши "Мой компьютер".
  • Нажмите "Управление"
  • Откройте "Услуги и приложения"
  • Нажмите "Услуги"
  • Найдите свою службу в списке и щелкните ее правой кнопкой мыши.
  • Нажмите "Пуск"

Как только он запустится, вы можете перейти в Visual Studio, нажать "Отладка", затем нажать "Присоединить к процессу".

Другой метод заключается в том, чтобы добавить эту строку к вашему методу OnStart() в службе:

System.Diagnostics.Debugger.Launch();

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

Ответ 2

Вы можете изменить режим запуска сборки в зависимости от того, находитесь ли вы в режиме DEBUG (обычно внутри Visual Studio, но не обязательно) или в режиме RELEASE (когда он запускается как служба в процессе производства):

Измените это:

static class Program
{
    static void Main()
    {
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[] 
        { 
            new MyService() 
        };
        ServiceBase.Run(ServicesToRun);
    }
}

:

static class Program
{
    static void Main()
    {
        #if(!DEBUG)
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new MyService() 
            };
            ServiceBase.Run(ServicesToRun);
        #else
            MyService myServ = new MyService();
            myServ.Process();
            // here Process is my Service function
            // that will run when my service onstart is call
            // you need to call your own method or function name here instead of Process();
        #endif
    }
}

Техника взята из в этой статье, и кредит для автора статьи Техаса Вайшнава. Я скопировал фрагменты кода, потому что SO предпочитает полные ответы, а не ссылки, которые могут исчезнуть через некоторое время.

Ответ 3

Пожалуйста, проверьте, находитесь ли вы в режиме "DEBUG" или "RELEASE". Я получил эту ошибку, когда пытался отладить службу в режиме "RELEASE". Когда я изменил это на "DEBUG", все сработало нормально.

Это после того, как вы правильно установили сервис, как это было предложено другими людьми выше.

Ответ 4

У меня такая же ошибка. Решение Tried @C.Lawrence. Хотя я нашел свою службу в списке служб, но все же получил ту же ошибку. Я прочитал блог, который предложил подключиться к процессу в меню отладки, и вот, я не вижу свою службу в списке процессов.

Я был бы признателен за возможные варианты решения этой проблемы.

Спасибо.