2015-04-22 3 views
-1

У меня возникла проблема с записью конфигурации в файл XML, когда моя база данных создана из устаревшего приложения. XML-документ выглядит так, как будто он говорит мне, в чем проблема, но я не могу понять, что это значит.Отладка сообщения «Было сообщение об ошибке XML»

Мое приложение позволяет пользователю сохранять конфигурацию в xml-файле из базы данных, и я использую XmlSerializer и filestream для записи моего класса конфигурации в XML-документ.

Это метод записи в классе конфигурации

public void Write(Stream stream) 
    { 
     XmlSerializer serializer = new XmlSerializer(typeof(Configuration)); 

     serializer.Serialize(stream, this); 
    } 

Это утверждение вызова, что

  using (FileStream fileStream = new FileStream(filename, FileMode.Create)) 
      { 
       config.Write(fileStream); 
      } 

Это все работает отлично, и я могу сохранить файл конфигурации. Проблема, которую я имею, состоит в том, что у нас есть устаревшее приложение psuedo, которое используется для установки всего, однако, если это задает базу данных, тогда все загружается отлично в моем приложении, но всякий раз, когда я пытаюсь сохранить конфигурацию из одной из этих баз данных, она вызывает «Ошибка создания XML-документа» сообщение об ошибке.

Я действительно не понимаю, как отлаживать это. Когда я смотрю на сгенерированный файл XML он просто останавливается в середине пути, например, через

<ServerIPAddress1>127</ServerIPAddress1> 
    <ServerIPAddress2>0</ServerIPAddress2> 
    <ServerIPAddress3>0</ServerIPAddress3> 
    <ServerIPAddress4>1</Ser 

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

Может кто-нибудь дать мне представление о том, где искать эту ошибку. Я пробовал много разных вещей, таких как загрузка конфигурации, которая могла быть сохранена для изменения xml, поэтому она должным образом отформатирована и все работает, когда я сохраняю ее в файле, и все работает правильно.

+1

Параметр 'InvalidOperationException' вы видите, это не полезно, но' InnerException' внутри будет. Найдите это и обновите вопрос с помощью сообщения. Также см. [Данное руководство] (https://msdn.microsoft.com/en-us/library/aa302290.aspx). –

+0

Когда я включил исключения clr, он дал мне точное поле, которое было неправильным. Старое приложение устанавливало значение enum 255, которого у нас не было в нашей версии. Так или иначе, это было лишнее, поэтому мы просто удалили его, и теперь все отлично работает! Как пометить ваш комментарий в качестве ответа здесь? – Keithin8a

+0

Свойство проблемы было около 7 или 8 свойств перед свойством serverIPAddress4. поэтому мне было бы интересно узнать, почему он решил остановиться там. Я предполагаю, что никто не узнает ответ на этот вопрос, вероятно, это будет просто микро-причуда, от которой мы все должны пострадать! – Keithin8a

ответ

2

Во-первых, попробуйте получить дополнительную информацию об исключении: существует ли внутреннее исключение?

С помощью Visual Studio вы можете попытаться на мгновение выбросить исключения CLR, чтобы получить дополнительную информацию.

(debug-> exceptions-> проверка CLR Исключения)

Смежные вопросы