BizTalk 2016 - 已升级 属性 在消息上下文中显示为未升级

BizTalk 2016 -Promoted property is showing as Not Promoted in the Message Context

背景: 我在请求中公开了一个 Biztalk 应用程序 endpoint.Promoted 属性 schema.I 在 Web Http Adapter-Variable Mapping.I 中使用了这个 属性也可以在发送端口过滤器中使用它。 示例 REST url- xxx.svc/getdetails/{bid}

错误:无法路由已发布的消息,因为找不到订阅者。

问题: 消息上下文包含提升 属性 的值,但类型未提升。请帮助解决此问题 issue.I 还尝试设置 属性 架构基本类型:MessageDataPropertyBase/PartContextPropertyBase.

更新 我已经使用了 Pass Through 接收 pipeline.Could 这有问题吗??

双击暂停的服务实例 留言截图:

您发布的是路由失败报告,其中所有属性都是 un-Promoted 设计的。所以,您所看到的是正确的。

BusinessPertnerId 的出现几乎肯定意味着它在管道中得到了正确的提升,因为没有办法只写 属性 而没有代码。

所以,问题可能出在订阅端。

您可以做的是添加一个发送端口,该端口使用肯定会匹配的更宽过滤器。然后让它停止。然后,您将看到一条 Suspended/Resumable 消息,您可以在其中确切地看到什么是推广的以及值是什么。

从那里,您需要确定它与您期望的订户不匹配的原因。

UPDATE I have used a Pass Through receive pipeline.Could that be an issue??

是的。就是这个问题。

读这个:https://docs.microsoft.com/en-us/biztalk/core/default-pipelines

Because it does not contain a disassembler, the pass-through receive pipeline cannot be used to route messages to orchestrations.

由于您使用的是Pass through receive,因此它不会提升您的属性,因为它没有反汇编组件。

试试这个:

  1. BusinessPertnerId 应该是提升的 属性。将 属性 架构基础设置为 MessageDataPropertyBase,以防 BusinessPertnerId 成为消息正文的一部分。将 属性 架构基础设置为 MessageContextPropertyBase,以防 BusinessPertnerId 仅为上下文 属性,并且消息不包含它。
  2. 在您的业务流程中创建一个新的关联类型(例如命名为:promote_businessPertnerId_type),并将您的 BusinessPertnerId 属性 添加到 "Correlation Properties".
  3. 创建新关联(例如:promote_businessPertnerId)
  4. 打开 "Send" 形状的属性并将 "Initializing Correlation Set" 设置为 promote_businessPertnerId
  5. 现在您的 SendPort 应该会收到消息上下文中提升的 BusinessPertnerId 的消息。