目前,我有一个windows服务正在运行,它从队列(MSMQ)读取消息。在收到来自队列的消息时,经常会抛出以下错误.(即在对放置在队列中的4000个事务运行测试时,异常会被抛出两次.)
对于造成这种情况的原因,有什么建议吗?值得注意的是,队列位于运行应用程序的不同服务器上。
20121011161348.899作业() ->异常(XmlException) System.Xml.XmlException:根元素丢失。( System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res)在System.Xml.XmlTextReaderImpl.ParseDocumentContent() at System.Xml.XmlReader.MoveToContent() at System.Xml.XmlReader.IsStartElement(String localname,String ns) at System.Messaging.XmlMessageFormatter.Read(Message message) System.Messaging.Message.get_Body() at PTFMiddleware.Queues.QueueMessaging.ReceiveT at PTFMiddleware.ProcessCCHMessages.Worker.Job()
你好,菲奥娜
发布于 2012-10-11 16:35:42
您的服务似乎在期待XML数据,并且正在队列中找到一些非XML的数据。从您引用的错误信息中可以清楚地看出这一点。根本原因将在于数据生成器;要标识数据生成器,您需要标识队列中引起问题的特定消息。
在由4000个事务组成的测试集中,使用二进制搜索技术可以在14次测试运行中识别问题消息之一:
一旦你发现了冒犯的信息,看看它们从哪里来,以及问题的本质。可能产生的XML中有多个最外层的元素。可能根本没有包含元素。找到破损的数据源;修复。
https://stackoverflow.com/questions/12843838
复制相似问题