我目前需要配置一个动态发送端口来连接不符合 WS-I Basic Profile v1.1 的 ASMX Web 服务。具体来说,R9981 声明“一个信封必须恰好有 0 个或一个 soap:Body 元素的子元素。 ”我正在使用的 Web 服务期望一个具有多个元素的主体,导致 SOAP 主体看起来像:
<Body>
<FirstElement />
<SecondElement />
</Body>
我曾尝试同时使用 WCF-BasicHttp 和 WCF-Custom 适配器,但均未成功。似乎 BizTalk WCF 适配器无法处理具有多个元素的 SOAP 主体。
在接收位置,我使用模板将消息包装在一个元素下,以解决消息通过 BizTalk 传输的问题,我认为我可以使用自定义发送管道/自定义组件简单地拦截消息以去除包装元素。然后我尝试了一个带有消息检查器的自定义行为扩展,但这仍然发生在 BizTalk 的 WCF“BizTalkBodyWriter”工作之前。
因为我使用的是 ESB 2.1 工具包,所以我不能使用 HTTP 适配器从头开始创建我的 SOAP 消息。我最后的想法是我需要创建一个自定义 WCF LOB 适配器,但在我走这条路之前,我想确保我不会在这里让事情变得过于复杂,并且没有一个我刚刚忽略的简单方法。