Я написал небольшую службу 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, потому что он не создает папку.
Спасибо за помощь.
Я нашел свой erorr с прикреплением Debugger с помощью этой команды:
Debugger.Launch().
Ошибка была в потоке из моего приложения.
Кажется, есть некоторые недоразумения; хотя исполняемый файл можно запустить из командной строки, сама служба не может быть запущена из командной строки. Кроме того, учебник о создании сервиса можно найти здесь.
If (Debugger.IsAttached) System.Diagnostics.Debugger.Break();