Azure Logic Apps处理Service Bus XML消息报错求助
问题根源与解决方案
为什么会报错?
你现在的错误核心在于发送Service Bus消息时,错误地对整个Compose输出(一个包含$content-type和$content的JSON包装对象)做了Base64编码,而非提取里面真正的XML内容进行处理。
从你提供的MessageText能看到,接收端解码后得到的是一段JSON字符串(开头是[{"$content-type":...}]),但xml()函数要求输入纯XML格式的字符串——JSON的语法和XML完全不兼容,自然会触发“根级别的数据无效”的报错。
正确的操作步骤
1. 修正发送端的编码逻辑
你的Compose_first_XML_message输出已经是Logic Apps的标准内容包装结构:其中$content字段就是XML内容的Base64编码结果,$content-type是对应的类型标识。
你不需要对整个Compose对象二次Base64编码,直接提取$content的值赋值给ContentData即可:
"ContentData": "@{outputs('Compose_first_XML_message')['$content']}", "ContentType": "application/xml"
2. 接收端逻辑无需修改(发送端修正后即可正常工作)
当发送端传递的是纯XML的Base64编码内容后,你原来的接收端代码就能正确解析XML了:
"content": "@{xml(base64toString(triggerBody()?['ContentData']))}"
验证小技巧
修正后可以用Service Bus Explorer检查消息:此时MessageText应该是纯XML明文(或Base64解码后为纯XML),而不是包含$content-type的JSON结构,这就说明发送逻辑已经正确了。
内容的提问来源于stack exchange,提问作者GATver
相关产品推荐
相关产品推荐

