C# 通过Biztalk管道拆分消息并提升属性

C# 通过Biztalk管道拆分消息并提升属性,c#,biztalk,biztalk-2010,C#,Biztalk,Biztalk 2010,我正在使用sqlserver存储过程从sqlserver表轮询格式良好的xml消息,该存储过程返回xml,如下所示 <PolledMessage xmlns="http://SomeNamespace.ru/"> <Message> <MessageNode> <MasterDataMemberAddRequest xmlns="http://AnotherNamespace"> ... <

我正在使用sqlserver存储过程从sqlserver表轮询格式良好的xml消息,该存储过程返回xml,如下所示

<PolledMessage xmlns="http://SomeNamespace.ru/">
  <Message>
    <MessageNode>
      <MasterDataMemberAddRequest xmlns="http://AnotherNamespace">
        ...
      </MasterDataMemberAddRequest>
    </MessageNode>
  </Message>
  <Message>
    <MessageNode>
      <MasterDataMemberAddRequest xmlns="http://AnotherNamespace">
        ...
      </MasterDataMemberAddRequest>
    </MessageNode>
  </Message>
</PolledMessage>

...
...
其中,MessageNode是一个节点,包含我要提取的消息。我已经通过XmlReceive管道使用信封模式完成了这项工作,并且工作得很好。但在此之后,我需要将一些自定义值写入每个提取消息的消息上下文中。我已经编写了一个自定义管道,它接受属性名、名称空间和值并将其写入消息上下文,但我不知道如何组合已分解消息的反汇编和提升属性

谢谢你的建议

Arsen

XMLReceive管道使用XML disembler组件对您的信封进行卸载,前提是它们被正确标记为(并假设它们在消息中!)

如果需要将自定义非消息属性推送到每条消息中,可以创建一个自定义管道,并将作用于每个已分解消息的管道组件放置在中


下面是一个自定义上下文属性提升组件的示例。您将在示例中看到,它位于验证阶段-我相信验证方或解决方都可以。希望这有帮助

谢谢你,杰森!看起来很酷,但我无法检查它是否有效,因为我面临另一个问题。在我的自定义管道中,我使用Promote方法将我的值写入上下文:“Message.context.Promote”(“您的属性名称”,“您的属性架构的名称空间”,value);”它给了我以下错误:“按名称空间加载属性信息列表失败或在列表中找不到属性。”您知道什么是“属性名称”以及什么是“您的属性架构的名称空间”吗。该名称空间参数是属性架构文件本身的名称空间,而不是节点或目标名称空间的名称空间。