Я новичок в службах Windows. Я создал установщик для своей службы С# Windows, и установка на сервере (Windows Server 2003), похоже, сработала. При запуске в лог пишет Служба успешно запущена
. При остановке пишет Служба успешно остановлена
. Однако иногда служба перестает работать, ничего не записывая в журнал, поэтому я запускаю ее вручную. Когда я потом смотрю журнал, он говорит, что Служба запущена успешно
, как и ожидалось. Странно видеть это в журнале дважды подряд, потому что явно отсутствует запись о том, что служба каким-то образом остановилась.
Каковы возможные причины этого? Я настроил службу как автоматическую и установил ее для всех пользователей. У меня сложилось впечатление, что это означает, что служба запускается автоматически при загрузке машины. Как узнать, почему он остановился? Службы, которые аварийно завершают работу, автоматически записываются в журнал событий или мне приходится обрабатывать исключения таким образом, чтобы они регистрировали собственную причину сбоя?
Редактировать: Дополнительная информация:
Обновление: Ответчик рекомендовал глобальный обработчик исключений. Хотя я не буду реализовывать это как постоянное исправление, оно, по крайней мере, поможет мне понять, где возникает проблема. Я действительно проверил это с моей установленной службой, и она работает. Я обнаружил, что необработанные исключения действительно приводят к сбою службы, вообще ничего не записывая в журнал. Я думал, что он по крайней мере сообщит об ошибке приложения, но это не так.
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
//other code here
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Utilities.WriteIt(e.ExceptionObject as Exception);
}