Azure BizTalk Services从服务总线队列中读取XML消息时出错

时间:2015-01-28 10:04:31

标签: azure azure-servicebus-queues biztalk-services

背景

  1. 我在Azure上创建了一个Web服务,它将接受一个事务,将其转换为XML消息(使用Schema)并将其传递到Azure Service Bus Queue。

  2. 由于BizTalk Services无法对任何XML对象进行反序列化,因此在将其移动到队列之前,我将XML对象反序列化为字符串。

  3. 队列上的所有配置看起来都很好,消息如下所示: <?xml version="1.0" encoding="utf-8"?> <QueueTransaction xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" TransactionID="1040" TransactionType="MyAirtimeTest1" Amount="123456" Status="NEW" TransactionDate="1/28/2015 12:00:00 AM" xmlns="http://MMBTService.TransactionSchema" />

  4. 我使用Service Bus Queue Source,Xml One-Way Brodge和One-Way External Service EndPoint(端点是WCF Web服务)创建BizTalk服务消息流

  5. 我有两个模式,使用MAP源XML数据到Web服务模式。

  6. 我选择了请求消息类型(源架构),只有Validate设置为True,我在XMLTransform中禁用了所有Enrich和我的MAP。

  7. 我收到的错误

    在我部署了所有内容之后,我发现了对BizTalk Services的跟踪,我收到以下错误:根级别的数据无效。第1行,第1位。

    我已经经历了几天了,并检查了将消息反序列化到桥接配置中的每个小细节,但找不到问题。

    任何建议或帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

从问题描述中看起来似乎是一个UTF编码问题。您在Azure Service Bus Queue中收到的消息采用UTF-8编码。但是,您创建的Bridge期望邮件为UTF-16编码。

要确保这是一个问题,您可以使用Microsoft Guy S Paolo开发的Service Bus Explorer检查Azure Queue中收到的消息。您可以尝试将消息UTF-8更改为UTF-16到同一个队列,并检查它是否有效。

希望它有所帮助。

由于