目前我正在运行一个从队列(MSMQ)读取消息的Windows服务。 在从队列接收消息时,非常偶然地抛出以下错误...(即在对队列上的4000个事务运行测试时异常被抛出两次......)
有关可能导致此问题的建议吗?值得注意的是,队列位于运行应用程序的不同服务器上。
20121011161348.899工作() - >异常(XmlException)System.Xml.XmlException:缺少根元素。在 System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res)at System.Xml.XmlTextReaderImpl.ParseDocumentContent()at System.Xml.XmlReader.MoveToContent()at System.Xml.XmlReader.IsStartElement(String localname,String ns)at System.Messaging.XmlMessageFormatter.Read(消息消息)at System.Messaging.Message.get_Body()at PTFMiddleware.Queues.QueueMessaging.Receive [T](MessageQueue队列, 字符串和放大器; label,Nullable`1 timeout)at PTFMiddleware.ProcessCCHMessages.Worker.Job()
亲切的问候, 菲奥娜
答案 0 :(得分:0)
您的服务似乎期待XML数据,并且要在队列中查找非XML的数据。从您引用的错误消息中可以清楚地看出这一点。根本原因将与数据生产者有关;识别数据生成器,您需要识别队列中导致问题的特定消息。
在4000个交易的测试集中,使用二进制搜索技术将在少至14次测试运行中识别出一条有问题的消息:
一旦找到有问题的消息,请查看它们的来源以及问题的性质。可能在生成的XML中有多个最外层元素。可能根本没有包含元素。找到损坏的数据源;固定。