首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XMLException:根元素丢失

XMLException:根元素丢失
EN

Stack Overflow用户
提问于 2012-10-11 16:02:58
回答 1查看 4.4K关注 0票数 1

目前,我有一个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()

你好,菲奥娜

EN

回答 1

Stack Overflow用户

发布于 2012-10-11 16:35:42

您的服务似乎在期待XML数据,并且正在队列中找到一些非XML的数据。从您引用的错误信息中可以清楚地看出这一点。根本原因将在于数据生成器;要标识数据生成器,您需要标识队列中引起问题的特定消息。

在由4000个事务组成的测试集中,使用二进制搜索技术可以在14次测试运行中识别问题消息之一:

  1. 将$low设置为1,$high设置为2000,$altlo设置为2001,$althi设置为4000。
  2. 测试从$low到$high的事务。
  3. 如果没有报告错误(问题在数据集中的另一半),请将$low设置为$altlo,将$high设置为$althi。如果您感到偏执和谨慎,请重新运行测试,以确认错误确实发生在这组数据中。
  4. 如果$low = $high,则所指示位置的事务是错误的。
  5. 将$althi设置为$high,将$high设置为(($low + $high) / 2),将$altlo设置为$high + 1,将$low设置为$low,然后转到步骤2。

一旦你发现了冒犯的信息,看看它们从哪里来,以及问题的本质。可能产生的XML中有多个最外层的元素。可能根本没有包含元素。找到破损的数据源;修复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12843838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档