Получение информации, почему служба .NET была остановлена ​​в OnStop - PullRequest
0 голосов
/ 07 октября 2009

У меня есть сервис .NET, основанный на ServiceBase:

public partial class Service : ServiceBase

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

Поскольку вызывается метод OnStop, я хотел бы зарегистрировать некоторую диагностическую информацию, чтобы увидеть, что вызвало остановку. Можно ли получить эту информацию в этот момент? Я смотрю: какой пользователь инициировал остановку, с какой рабочей станции / IP-адреса он был инициирован, и тому подобное. Есть идеи?

Ответы [ 2 ]

1 голос
/ 07 октября 2009

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

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

       foreach (EventLog logs in System.Diagnostics.EventLog.GetEventLogs())
       {
            if (logs.LogDisplayName.ToUpper() == "SYSTEM")
            {
                foreach (EventLogEntry logEntry in logs.Entries)
                {
                    if(logEntry.TimeGenerated >= DateTime.Now.AddMinutes(-2))
                    {
                        Console.WriteLine("User: {0} Message: {1}", logEntry.UserName, logEntry.Message);
                    }
                }
            }
        }
0 голосов
/ 16 октября 2009

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

Эта тема может пролить свет на проблему с деструкторами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...