protected override void OnStart(string[] args)
{
System.Diagnostics.Debugger.Launch();
eventLog.WriteEntry("Server started");
server = new Server();
}
Если изменить метод сервиса OnStart так, как в этом примере, то при запуске службы выскочит диалог с вопросом, какой отладчик запускать. Можно выбрать нужный пункт, после чего в отладчике служба остановится в этом месте.
После запуска отладчик останавливается на строке System.Diagnostics.Debugger.Launch();. Чтобы успешно отлаживаться, надо не забыть "отпустить отладчик" дальше побыстрее, потому что, если постоять тут 30 сек., SCM решит, что служба не запустилась и поток завершится.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
>Как можно узнать причины появления ошибки?
Поместить в try/catch содержимое метода OnStart и в catch писать exception.ToString() в Windows Event Log (см.класс EventLog)
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Или выполните отладку сервиса и на лету посмотрите исключение.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Такая ошибка выводится например тогда, когда сервис генерирует и не перехватывает исключение.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Вопрос к AlexGaas.
А как можно в данном случае выполнить отладку сервиса на лету?
Непосредственно запустить его в дебаг-моде не получиться т.к. это сервис, а не обычная программа. А процесс сервиса, к которому мы можем присоединиться для его отладки, появиться только после выполнения OnStart() в котором, как я понял и происходит ошибка.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Здравствуйте, Аноним, Вы писали:
А>Вопрос к AlexGaas.
А>А как можно в данном случае выполнить отладку сервиса на лету?
А>Непосредственно запустить его в дебаг-моде не получиться т.к. это сервис, а не обычная программа. А процесс сервиса, к которому мы можем присоединиться для его отладки, появиться только после выполнения OnStart() в котором, как я понял и происходит ошибка.
Как насчет
System.Diagnostics.Debug.Assert(false);
в методе OnStart?
Полезная штука, спасибо :j)
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение