我有以下行程:
单向接收位置将消息传递给业务流程,其中提取内部消息(无法在地图中执行此操作)。
然后映射来自业务流程的返回消息 该地图的结果,再次映射。使用Microsoft.Practices.ESB.Services.Transform服务。
然后通过Microsoft.Practices.ESB.Services.Routing服务将其传递给Web服务,该服务触发正常但我没有收到我想写入文件的预期响应。写入文件的消息是传递给Web服务的消息,而不是预期的响应。使用更简单的行程测试Web服务,即没有编排扩展器的行程表明Web服务按预期工作。
OffRamp来自GlobalBank.ESB示例应用程序。
如何从网络服务获得所需的回复?
答案 0 :(得分:2)
所以最后设法找到了一个解决方案,我必须完全赞美this guy
问题是Microsoft.Practices.ESB.Services.Routing Service只提供单向操作,所以即使你用双向消息交换模式标记你的解析器也不行。
如果您在BizTalk管理控制台中检查Microsoft.Practices.ESB应用程序,它有一个单向动态发送端口Microsoft.Practices.ESB.Agents_2.1.0.0_Microsoft.Practices.ESB.Agents.Delivery_DeliveryPort_31bf3856ad364e35绑定到编排Microsoft .Practices.ESB.Agents.Delivery。当您使用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,该类型由管理控制台中orchestraiton(逗号分隔)的名称和程序集组成,并将根据您部署到的应用程序而有所不同。范围和阶段如上所示。
最初我在发送端口上遇到错误Biztalk.HoopleEsbGeneric.Orchestrations_1.0.0.0_ESB.MultipleWebServices.Orchestrations.TwoWayRouting_RoutingPort_140bc5dcbb9afcea但将发送和接收管道分别更改为PassThruTransmit和PassThruReceive分别解决了这个问题。