在业务流程中使用 SOAP 标头

业务流程使用属性架构来定义 SOAP 标头上下文属性。 使用 BizTalk 编辑器可以设置 SOAP 标头上下文属性。

使用属性架构定义 SOAP 标头上下文属性

若要在业务流程中使用已定义的 SOAP 标头上下文属性,您需要一个属性架构。 属性架构的目标命名空间 http://schemas.microsoft.com/BizTalk/2003/SOAPHeader必须为 ,并且 属性架构基 属性设置为 MessageContextPropertyBase。 属性架构中的每个根元素名称必须与已定义的 SOAP 标头的根元素名称匹配。 然后,可以使用属性架构的命名空间和属性名称设置上下文属性的值。

注意

属性架构的命名空间不同于) (http://schemas.microsoft.com/BizTalk/2003/SOAPHeader 目标架构的命名空间。 命名空间可以是任何字符串;但是,它通常默认为项目的名称。

下面的代码演示如何分配 SOAP 标头上下文属性,其中属性架构命名空间是 SOAPHeader ,属性名称为 OrigDest

requestMessageInstance(SOAPHeader.OrigDest) = stringVar;  

有关属性架构和上下文属性的详细信息,请参阅 属性架构

使用 BizTalk 编辑器设置 SOAP 标头上下文属性

对于业务流程,SOAP 标头上下文属性均设置为包含 XML 数据的字符串。 可以在消息分配或表达式形状中使用 BizTalk 表达式编辑器设置这些字符串。

下面的示例演示设置该上下文属性的字符串:

RequestMessageInstance(SOAPHeader.OrigDest) = "<?xml version=\"1.0\"?>  
<OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\">  
<Origination>Home</Origination>  
<Destination>Work</Destination>  
</OrigDest>"  

使用 BizTalk 编辑器创建 SOAP 标头根元素的实例

将 SOAP 标头设置为正确的字符串可能并不容易。 添加对 BizTalk 项目的 Web 引用时,所有复杂的 Web 消息部分都将作为根元素添加到 Reference.xsd。 Reference.xsd 还包含每个已定义的 SOAP 标头的根元素。 为确保使用正确的字符串设置 SOAP 标头,应使用 BizTalk 编辑器为 Reference.xsd 创建 SOAP 标头根元素的实例。 您可以直接使用生成的实例数据,或使用包含实际数据的实例数据。

有关使用 BizTalk 编辑器生成实例数据的详细信息,请参阅 如何生成实例消息

创建用于设置上下文属性的 XmlDocument

可以通过创建 XmlDocument 并将 XmlDocument 的字符串值写入上下文属性来设置上下文属性。 声明 XMLDocument 类型的变量并分配 XML 数据。

以下示例演示如何设置 声明 XMLDocument 类型的变量并分配 XML 数据:

xmlDoc.LoadXml("<?xml version=\"1.0\"?><OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\"><Origination>Home</Origination><Destination>Work</Destination></OrigDest>");  

下面的示例显示了如何设置上下文属性:

RequestMessageInstance(SOAPHeader.OrigDest) = xmlDoc.OuterXml;  

有关使用 BizTalk 表达式编辑器的详细信息,请参阅 表达式的要求和限制。 有关调用 .NET 类的详细信息,请参阅 在用户代码中构造消息

为 SOAP 请求创建 SOAP 标头

为 SOAP 请求创建 SOAP 标头时,必须确保您已正确创建 SOAP 标头。 SOAP 适配器不验证 SOAP 标头上下文属性的内容。

注意

如果 SOAP 标头不正确,则 BizTalk 就不能将 SOAP 请求发送到 Web Services。

BizTalk 返回给 Web Services 的 SOAP 响应也可能包含 SOAP 标头。 只有 SOAP 标头为已定义的 SOAP 标头时才可以访问这些 SOAP 标头。

注意

已使用的 Web Services 仅支持已定义的 SOAP 标头。

有关定义的 SOAP 标头的详细信息,请参阅 使用 SOAP 标头。 响应 SOAP 标头使用与请求 SOAP 标头相同的语法设置为上下文属性。

下面的代码显示了如何访问响应 SOAP 标头:

stringVar = ResponseMessageInstance(SOAPHeader.OrigDest);  

上下文属性中包含的值是包含 XML 数据的字符串。 可以在 消息分配表达式 形状中使用 BizTalk 表达式编辑器设置这些字符串。 在 XmlDocument 中加载字符串,并使用 XPath 查询访问特定字段。

有关在 BizTalk 表达式编辑器中创建 XML 文档的详细信息,请参阅 XLANG-s 语言

另请参阅

XLANG-s 语言
SOAP 标头与使用的 Web 服务