Странное исключение XML при отправке SOAP-запроса - PullRequest
0 голосов
/ 09 марта 2011

Есть приложение, которое публикует данные XML через веб-сервис с использованием SOAP.

Данные извлекаются непосредственно из базы данных Oracle и анализируются в XML, но по какой-то причине данные, извлекаемые из БД, вызывают следующее недопустимое исключение XML.

Мы провели небольшое исследование, и похоже, что где-то в данных это может быть символ NULL, который не нравится анализатору XML.

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

Спасибо!

Вот трассировка стека ...

Исключение System.Xml.XmlException: '.', Шестнадцатеричное значение 0x00, является недопустимым символом. Строка 1, позиция 79763. в System.Xml.XmlTextReaderImpl.Throw (исключение e) в System.Xml.XmlTextReaderImpl.Throw (String res, String [] args) в System.Xml.XmlTextReaderImpl.Throw (Int32 pos, String res, String [] args) в System.Xml.XmlTextReaderImpl.ThrowInvalidChar (Int32 pos, Char invChar) в System.Xml.XmlTextReaderImpl.ParseNumericCharRefInline (Int32 startPos, логическое раскрытие, BufferBuilder internalSubsetBuilder, Int32 и charCount, EntityType & entityType) в System.Xml.XmlTextReaderImpl.ParseText (Int32 и startPos, Int32 и endPos, Int32 и outOrChars) в System.Xml.XmlTextReaderImpl.ParseText () в System.Xml.XmlTextReaderImpl.ParseElementContent () в System.Xml.XmlTextReaderImpl.Read () в System.Xml.XmlTextReader.Read () в System.Xml.XmlValidatingReaderImpl.Read () в System.Xml.XmlValidatingReader.Read () в System.Xml.XmlLoader.LoadNode (логическое skipOverWhitespace) в System.Xml.XmlLoader.LoadDocSequence (XmlDocument parentDoc) в System.Xml.XmlLoader.Load (документ XmlDocument, читатель XmlReader, логическое preserveWhitespace) в System.Xml.XmlDocument.Load (читатель XmlReader) в Microsoft.Web.Services2.Security.MessageSignature.PreProcessElementInput (XmlElement elem) в Microsoft.Web.Services2.Security.SignatureReference.CalculateHashValue (документ XmlDocument, CanonicalXmlNodeList refList) в Microsoft.Web.Services2.Security.MessageSignature.BuildDigestedReferences () в Microsoft.Web.Services2.Security.MessageSignature.ComputeKeyedHashSignature (ключ SymmetricKeyAlgorithm) в Microsoft.Web.Services2.Security.MessageSignature.ComputeSignature () в Microsoft.Web.Services2.Security.Security.SerializeXml (документ SoapEnvelope) в Microsoft.Web.Services2.Security.SecurityOutputFilter.ProcessHeader (безопасность, конверт SoapEnvelope) в Microsoft.Web.Services2.Security.SecurityOutputFilter.ProcessMessage (конверт SoapEnvelope) в Microsoft.Web.Services2.Pipeline.ProcessOutputMessage (конверт SoapEnvelope) в Microsoft.Web.Services2.OutputStream.Close () в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, Object [] параметры)

ОБНОВЛЕНИЕ: Вот выборка публикуемых данных. В основном, простой текст, это то, как он существует в столбцах базы данных, включенных через запятую.

614494, 2003, 33, 327, 15961, 59652, 2, 2, 3, 2, 1, 10 декабря 2008 года, AERO SEDAN MY2003, руководство 2.0 * 1019

1 Ответ

0 голосов
/ 09 марта 2011

Какие данные вы извлекаете из Oracle?Блог?Изображение блоб?

Причина, по которой я спрашиваю, состоит в том, что у изображений есть заголовки, что означает, что после заголовка будет нулевой символ.Не уверен, как избежать нулевого символа, чтобы сделать его действительным для сериализации, но вы можете сделать что-то вроде base64-кодирования изображения, что будет означать обращение преобразования base64 на другом конце.что вам следует публиковать точные данные, которые вы извлекаете из Oracle, поскольку это может помочь с более конкретным ответом.

...