Нулевые символы в ответе веб-службы вызывают ошибку документа XML - PullRequest
0 голосов
/ 20 января 2009

Кажется, есть ошибка в SQL Server Integration Services 2005, которая при определенных обстоятельствах преобразует строку нулевой длины в строку из одного символа, символ которой оказывается ансулиным, т.е. ноль символа ascii (обратите внимание, что это сильно отличается от нуля в sql).

Это происходит с одним из наших процессов загрузки данных, так что адресные строки, которые должны быть пустыми, содержат в себе эти символы.

Мы предоставляем эти данные через веб-сервисы, и данные сериализуются нормально. Нули даже удаляются стандартным XSL при просмотре ответа веб-службы через IE, однако при просмотре исходного кода вы можете видеть их:

Addr2="�"

Но когда вы вызываете эту службу из сгенерированного прокси .Net, вы получаете сообщение об ошибке:

"There is an error in XML document"

Это возможно потому, что значение null завершает документ и, следовательно, делает его недействительным.

Хотя мы можем изо всех сил стараться предотвратить их попадание в базу данных, есть ли способ предотвратить ошибку прокси-кода, когда эти значения присутствуют в ответе? На самом деле мы не хотим добавлять код во все наши веб-методы для их обнаружения и удаления.

1 Ответ

1 голос
/ 29 января 2009

У меня была похожая проблема, хотя это произошло в нашем собственном веб-сервисе. Для диагностики проблемы я отладил сгенерированные библиотеки DLL XmlSerializer. Вы можете сделать это, добавив

<system.diagnostics>
  <switches>
    <add name="XmlSerialization.Compilation" value="4"/>
  </switches>
</system.diagnostics>

Подробнее см. MSDN .

Нам удалось решить проблему на стороне веб-службы.

Другое решение можно найти по адресу в этом месте .

...