所以终于设法找到了一个解决方案,我必须完全相信这个人
问题是 Microsoft.Practices.ESB.Services.Routing 服务只提供一种方式操作,所以即使你用双向消息交换模式标记你的解析器它也不会工作。
如果您在 BizTalk 管理控制台中检查 Microsoft.Practices.ESB 应用程序,它有一种单向动态发送端口 Microsoft.Practices.ESB.Agents_2.1.0.0_Microsoft.Practices.ESB.Agents.Delivery_DeliveryPort_31bf3856ad364e35 绑定到编排 Microsoft.Practices。 ESB.代理.交付。当您使用 Orchestration 扩展程序并使用 Microsoft.Practices.ESB.Services.Routing 服务时,此端口用于发送任何呼叫,因为这是单向端口,您不会得到响应。
您需要在 callwebservice 形状中使用双向编排。MultipleWebServices ESB 示例中提供了一个双向编排示例。如果您部署该编排并将其注册为行程服务并以 callwebservice 形式使用它,它将起作用。
它或多或少做到了:) 通过在 itineraryServices 节点之间的 esb 配置中添加一个条目,部署编排并将其作为行程服务注册到 ESB:
<itineraryService id="04BD6120-06E4-43D3-A56F-2FF061D59862" name="ESB.MultipleWebServices.Orchestrations.TwoWayRouting" type="ESB.MultipleWebServices.Orchestrations.TwoWayRouting, Biztalk.EsbGeneric.Orchestrations, Version=1.0.0.0, Culture=neutral, PublicKeyToken=140bc5dcbb9afcea" scope="Orchestration" stage="None"/>
使用 guidgen 创建一个 id,类型由管理控制台中编排的名称和程序集(逗号分隔)组成,并且会根据您部署到的应用程序而有所不同。范围和阶段如上所示。
最初我在发送端口 Biztalk.HoopleEsbGeneric.Orchestrations_1.0.0.0_ESB.MultipleWebServices.Orchestrations.TwoWayRouting_RoutingPort_140bc5dcbb9afcea 上出现错误,但将发送和接收管道分别更改为 PassThruTransmit 和 PassThruReceive 解决了这个问题。