как можно отладить эту ошибку? <Сервисное название> сервис не мог быть запущен. Сервис не сообщил об ошибке

Да, GetSchema () должен возвратить пустой указатель .

IXmlSerializable. Метод GetSchema Этот метод резервируется и не должен использоваться. При реализации интерфейса IXmlSerializable необходимо возвратить нулевую ссылку (Ничто в Visual Basic) из этого метода, и вместо этого, при определении, что пользовательская схема требуется, примените XmlSchemaProviderAttribute к классу.

И для чтения и для записи, объектный элемент был уже записан, таким образом, Вы не должны добавлять внешний элемент в записи. Например, можно только начать читать/писать атрибуты в двух.

Для запись :

реализация WriteXml, которую Вы обеспечиваете, должна выписать представление XML объекта. Платформа пишет элемент обертки и располагает писателя XML после его запуска. Ваша реализация может записать свое содержание, включая дочерние элементы. Платформа тогда закрывает элемент обертки.

И для читает :

метод ReadXml должен воссоздать Ваш объект с помощью информации, которая была записана методом WriteXml.

, Когда этот метод называют, читатель расположен в начале элемента, который обертывает информацию для Вашего типа. Таким образом, незадолго до тега запуска, который указывает на начало сериализованного объекта. Когда этот метод возвращается, он, должно быть, считал весь элемент с начала до конца, включая все его содержание. В отличие от метода WriteXml, платформа не обрабатывает элемент обертки автоматически. Ваша реализация должна сделать так. Отказ наблюдать эти правила расположения может заставить код генерировать неожиданные исключения на этапе выполнения или поврежденные данные.

я соглашусь, что это немного неясно, но это сводится к "ему, Ваше задание к Read() тег элементов конца обертки".

8
задан John Saunders 30 July 2009 в 17:09
поделиться

3 ответа

В методе OnStart () вашей службы есть исключение, добавьте

 try{...} 
 catch(Exception ex)
 {
     //write to file ex.ToString();
 }

и запишите свое исключение в файл

9
ответ дан 5 December 2019 в 15:25
поделиться

Если у вас установлена ​​Visual Studio и вы используете .NET, вызовите System.Diagnostics.Debugger.Break () в своей функции OnStart (). Когда ваша служба запустится, вам будет предложено отладить службу. Выберите вариант Visual Studio, и вы войдете в отладчик, где находится программная точка останова. Оттуда вы можете нормально отлаживать.

0
ответ дан 5 December 2019 в 15:25
поделиться

Добавить блок обработки ошибок (перехват UnhandledException или просто блок try / catch вокруг подозрительного кода) и зарегистрировать его ( Я использую либо Trace, либо Debug - вы можете просматривать эти сообщения с помощью DebugView).

Чтобы сообщить Service Manager об ошибке (просто чтобы помочь пользователю), вы можете:

service.ExitCode = 1064; //ERROR_EXCEPTION_IN_SERVICE - just example

Где "service" - это ваша служба объект.

2
ответ дан 5 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: