如何配置 WCF-Custom 发送端口

可以通过编程方式或使用 BizTalk 管理控制台配置 WCF-Custom 发送端口。

配置属性

BizTalk 资源管理器对象模型为发送端口公开一个适配器特定的接口,该接口名为 ITransportInfo,并具有 TransportTypeData 读/写属性。 此属性接受一个 WCF-Custom 发送端口配置属性包,该包以 XML 字符串的名称-值对形式存在。

无需 ITransportInfo 接口的 TransportTypeData 属性。 如果未设置,适配器将使用 WCF-Custom 发送端口配置的默认值,如下表所示。

以下列表描述了可在 BizTalk 资源管理器对象模型中为 WCF-Custom 发送端口设置的配置属性:

  • 属性名称标识

    • 类型:XML Blob

      示例:

      <identity>
      <userPrincipalName value="username@contoso.com" />
      </identity>
      
    • 说明:指定此发送端口所需的服务标识。 这些设置使此发送端口能够对服务进行身份验证。 在客户端和服务之间的握手过程中,WCF 基础结构将确保预期服务的标识与此元素的值匹配。 可以为 Identity 属性指定的值因安全配置而异。

      默认值为空字符串。

  • 属性名称StaticAction

    • 类型:字符串

    • 说明:指定传出消息的 SOAPAction 标头字段。 还可以通过管道或流程编排中的消息上下文属性 WCF.Action 设置此属性。 可以通过两种不同的方式指定此值:单一动作格式和动作映射格式。 如果将此属性设置为单个操作格式,例如 http://contoso.com/Svc/Op1,则传出消息的 SOAPAction 标头始终设置为此属性中指定的值。

      如果在动作映射格式中设置此属性,传出的 SOAPAction 标头由 BTS.Operation 上下文属性确定。 例如,如果此属性设置为以下 XML 格式并且 BTS.Operation 属性设置为 Op1,那么 WCF 发送适配器使用 http://contoso.com/Svc/Op1 作为传出的 SOAPAction 标头。

      <BtsActionMapping>
      <Operation Name="Op1" Action="http://contoso.com/Svc/Op1" />
      <Operation Name="Op2" Action="http://contoso.com/Svc/Op2" />
      </BtsActionMapping>
      

      如果传出消息来自业务流程端口,业务流程实例会动态设置 BTS.Operation 属性为端口的操作名称。 如果传出消息是通过基于内容的路由进行的,则可以在管道组件中设置 BTS.Operation 属性。

      默认值为空字符串。

  • 属性名称BindingType

    • 类型:枚举

      有关 BindingType 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框中的“绑定类型”属性、“发送”、“绑定”选项卡。

    • 说明:指定要用于此发送端口使用的终结点的绑定的类型。

      如果使用自定义绑定,则可以使用自定义绑定配置 BindingType 属性。 有关如何使用自定义绑定的详细信息,请参阅 如何使用 WCF 适配器启用 WCF 扩展点

  • 属性名称BindingConfiguration

    • 类型:XML Blob

      示例:

      <binding name="netNamedPipeBinding">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None" />
      </binding>
      
    • 说明:指定包含<binding>元素的 XML 字符串,以配置由 Windows Communication Foundation (WCF) 提供的不同类型的预定义绑定。 有关系统提供的绑定和自定义绑定的详细信息,请参阅“另请参阅”中列出的相应主题。

      BizTalk Server 不支持可以使用 BindingConfiguration 属性配置的绑定扩展元素的所有类型。

      默认值为空字符串。

  • 属性名称EndpointBehaviorConfiguration

    • 类型:XML Blob

      示例:

      <behavior name="sampleBehavior">
      <callbackTimeouts />
      </behavior>
      
    • 说明:指定一个包含 <behavior> 元素的 <endpointBehaviors> 元素的 XML 字符串,以配置 WCF 终结点的行为设置。 有关该元素的详细信息 <endpointBehaviors> ,请参阅“另请参阅”中的相应主题。

      BizTalk Server 不支持可以使用 EndpointBehaviorConfiguration 属性配置的所有类型的行为扩展元素。

      默认值为空字符串。

  • 属性名称AffiliateApplicationName

    • 类型:字符串

    • 说明:指定要用于企业单一 Sign-On(SSO)的关联应用程序。

      默认值为空字符串。

  • 属性名称UseSSO

    • 类型:布尔值

    • 说明:指定是否使用单 Sign-On 检索客户端凭据以与目标服务器进行身份验证。

      默认值: False

  • 属性名称UserName

    • 类型:字符串

    • 说明:将 UseSSO 属性设置为 False 时,指定要用于向目标服务器进行身份验证的用户名。 不必对此属性使用 domain\user 格式。

      默认值为空字符串。

  • 属性名称密码

    • 类型:字符串

    • 说明:将 UseSSO 属性设置为 False 时,指定用于向目标服务器进行身份验证的密码。

      默认值为空字符串。

  • 属性名称OutboundBodyLocation

    • 类型:枚举

      • UseBodyElement:使用 BizTalk 消息正文部件为传出消息创建 SOAP Body 元素的内容。
      • UseTemplate:使用 OutboundXMLTemplate 属性中提供的模板为传出消息创建 SOAP Body 元素的内容。

      有关如何使用 OutboundBodyLocation 属性的详细信息,请参阅 指定 WCF 适配器的消息正文

    • 说明:指定传出 WCF 消息的 SOAP Body 元素的数据选择。

      默认值: UseBodyElement

  • 属性名称OutboundXMLTemplate

    • 类型:字符串

      有关如何使用 OutboundXMLTemplate 属性的详细信息,请参阅 指定 WCF 适配器的消息正文

    • 说明:为传出消息的 SOAP Body 元素的内容指定 XML 格式的模板。 如果 OutboundBodyLocation 属性设置为 UseTemplate,则此属性是必需的。

      默认值为空字符串。

  • 属性名称InboundBodyLocation

    • 类型:枚举

      • UseBodyElement:使用传入消息的 SOAP Body 元素的内容来创建 BizTalk 消息正文部件。 如果 Body 元素具有多个子元素,则只有第一个元素成为 BizTalk 消息正文部分。 此属性仅适用于请求响应端口。
      • UseEnvelope:从传入消息的整个 SOAP 信封 创建 BizTalk 消息正文部分。
      • UseBodyPath:使用 InboundBodyPathExpression 属性中的正文路径表达式创建 BizTalk 消息正文部件。 根据传入消息的 SOAP Body 元素的即时子元素计算正文路径表达式。 此属性仅适用于请求响应端口。

      有关如何使用 InboundBodyLocation 属性的详细信息,请参阅 指定 WCF 适配器的消息正文

    • 说明:指定传入 WCF 消息的 SOAP Body 元素的数据选择。

      默认值: UseBodyElement

  • 属性名称InboundBodyPathExpression

    • 类型:字符串

      有关如何使用 InboundBodyPathExpression 属性的详细信息,请参阅 WCF 适配器属性架构和属性

    • 说明:指定正文路径表达式以标识用于创建 BizTalk 消息正文部件的传入消息的特定部分。 此正文路径表达式根据传入消息的 SOAP 正文 节点的直接子元素计算。 如果此正文路径表达式返回多个节点,则仅为 BizTalk 消息正文部分选择第一个节点。 如果将 InboundBodyLocation 属性设置为 UseBodyPath,则需要此属性。 此属性仅适用于请求响应端口。

      默认值为空字符串。

  • 属性名称InboundNodeEncoding

    • 类型:枚举

      • XML
      • Base64:Base64 编码
      • Hex: 十六进制编码
      • 字符串:文本编码;UTF-8
      • XML:WCF 适配器通过使用 InboundBodyPathExpression 中指定的正文路径表达式,选取节点并利用其外层 XML 来创建 BizTalk 消息正文。
    • 说明:指定 WCF-Custom 发送适配器使用的编码类型,以解码 InboundBodyPathExpression 中指定的正文路径标识的节点。 如果将 InboundBodyLocation 属性设置为 UseBodyPath,则需要此属性。 此属性仅适用于请求响应端口。

      默认值: XML

  • 属性名称PropagateFaultMessage

    • 类型:布尔值

      • True:将出站处理失败的消息路由到订阅应用程序(例如另一个接收端口或业务流程计划)。
      • False:暂停失败的消息并生成否定确认(NACK)。
    • 说明:指定在出站处理中失败的消息是路由还是挂起。

      此属性仅适用于请求响应端口。

      默认值: True

  • 属性名称ReferencedBindings

    • 类型:XML Blob

      示例:

      <BindingConfiguration vt="8">
      <wsFederationHttpBinding>
        <binding name="sampleBinding">
         <security mode="Message">
          <message issuedKeyType="AsymmetricKey">
           <issuer address="http://www.contoso.com/samplests" binding="wsFederationHttpBinding" bindingConfiguration="contosoSTSBinding"/>
          </message>
         </security>
        </binding>
      </wsFederationHttpBinding>
      </BindingConfiguration>
      <ReferencedBindings vt="8">
      <bindings>
        <wsFederationHttpBinding>
         <binding name="contosoSTSBinding">
          <security mode="Message">
           <message negotiateServiceCredential="false">
            <issuer address="http://northwind.com/samplests" bindingConfiguration="northwindBinding" binding="wsHttpBinding">
            </issuer>
           </message>
          </security>
         </binding>
        </wsFederationHttpBinding>
        <wsHttpBinding>
         <binding name="northwindBinding">
          <security mode="Message">
           <message clientCredentialType="Certificate" />
          </security>
         </binding>
        </wsHttpBinding>
      </bindings>
      </ReferencedBindings>
      

      ReferencedBinding 属性不得包含 BindingConfiguration 属性中使用的绑定配置。

    • 说明:指定 wsFederationHttpBinding 和 customBinding 的<issuer> 元素中由 bindingConfiguration 属性引用的绑定配置,该配置指示颁发安全令牌的安全令牌服务(STS)。 有关 <issuer> 元素的详细信息,请参阅 WCF 配置架构:<issuer>

      可以通过 WCF-Custom 和 WCF-CustomIsolated 适配器的 BindingConfiguration 属性来配置包括 <issuer> 元素在内的绑定信息,如 wsFederationHttpBindingcustomBinding。 此属性的所有引用绑定配置都必须以<bindings>元素的形式放置。

      无法在传输属性对话框中的“ 绑定 ”选项卡上配置此属性。 可以通过 WCF-Custom 和 WCF-CustomIsolated 适配器的传输属性对话框中的 “导入/导出 ”选项卡导入和导出此属性。

      元素的 <issuer>bindingConfiguration 属性必须引用此属性中的有效绑定名称。

      <issuer>如果引用链不生成循环依赖项,则引用绑定配置中的元素还可以引用此属性中的其他绑定配置。

      默认值为空字符串。

使用 BizTalk 管理控制台配置 WCF-Custom 发送端口

可以在 BizTalk 管理控制台中设置 WCF-Custom 发送端口适配器变量。 如果未为发送端口设置属性,则使用 WCF-Custom 发送端口配置的默认值,如上表中所示。

为 WCF-Custom 发送端口配置变量

  1. 如果计划在配置 WCF-Custom 适配器时使用 WCF 扩展点(如自定义绑定元素、自定义行为元素和自定义通道组件),则必须将实现扩展点的程序集和所有依赖程序集添加到 BizTalk 处理计算机(运行时计算机)和管理计算机上的全局程序集缓存中。 此外,必须将扩展组件注册到 machine.config 文件。 有关如何将 WCF 扩展点与 WCF 自定义适配器配合使用的详细信息,请参阅 如何使用 WCF 适配器启用 WCF 扩展点

  2. 在 BizTalk 管理控制台中,创建新的发送端口,或双击现有发送端口对其进行修改。 有关详细信息,请参阅 如何创建发送端口。 配置所有发送端口选项,并在 UI 指南和开发人员 API 命名空间引用“常规”选项卡的“传输”部分中为“类型”选项指定 WCF-Custom

  3. 在“常规”选项卡上的“传输”部分中,单击“类型”旁边的“配置”按钮。

  4. “WCF-Custom 传输属性 ”对话框中的“ 常规 ”选项卡上,配置 WCF-Custom 发送端口的终结点地址、服务标识和 SOAPAction 标头。 有关“WCF-Custom 传输属性”对话框中的“常规”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“常规”选项卡。

  5. “WCF-Custom 传输属性 ”对话框中的“ 绑定 ”选项卡上,为 WCF 配置不同类型的预定义或自定义绑定。 有关“WCF-Custom 传输属性”对话框中的“绑定”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“绑定”选项卡。

  6. “WCF-Custom 传输属性 ”对话框中的“ 行为 ”选项卡上,为此发送端口配置终结点行为。 终结点行为是一组修改或扩展服务或客户端功能的行为扩展元素。 有关“WCF-Custom 传输属性”对话框中的“行为”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“行为”选项卡。

  7. “WCF-Custom 传输属性 ”对话框中的“ 凭据 ”选项卡上,指定要在发送消息时使用的凭据。 有关“WCF-Custom 传输属性”对话框中的“凭据”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“凭据”选项卡。

  8. “WCF-Custom 传输属性 ”对话框中的“ 消息 ”选项卡上,指定 SOAP 正文 元素的数据选择。 有关“WCF-Custom 传输属性”对话框中的“消息”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“消息”选项卡。

  9. “WCF-Custom 传输属性”对话框中的“导入/导出”选项卡上,导入和导出“常规”选项卡上的“地址”(URI)“终结点标识”属性、绑定信息以及此发送端口的“行为”选项卡上的终结点行为。 有关“WCF-Custom 传输属性”对话框中的“导入/导出”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“导入-导出”选项卡。

以编程方式配置 WCF-Custom 发送端口

可以使用以下格式设置属性:

<CustomProps>
  <OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
  <InboundBodyPathExpression vt="8" />
  <EndpointBehaviorConfiguration vt="8"><behavior name="sampleBehavior"><callbackTimeouts /></behavior></EndpointBehaviorConfiguration>
  <OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
  <StaticAction vt="8">http://www.northwindtraders.com/Service/Operation</StaticAction>
  <BindingConfiguration vt="8"><binding name="NetNamedPipeOrderProcessService.OrderProcessServieEndpoint"><readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /><security mode="None" /></binding></BindingConfiguration>
  <InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
  <UseSSO vt="11">0</UseSSO>
  <AffiliateApplicationName vt="8" />
  <BindingType vt="8">netNamedPipeBinding</BindingType>
  <InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
  <UserName vt="8" />
  <PropagateFaultMessage vt="11">-1</PropagateFaultMessage>
</CustomProps>

以下代码片段演示如何创建 WCF-Custom 发送端口:

谨慎

此示例或指南引用敏感信息,例如连接字符串或用户名和密码。 切勿在代码中硬编码这些值,并确保使用最安全的身份验证来保护机密数据。 有关详细信息,请参阅以下文档:

// Use BizTalk Explorer object model to create new WCF-Custom send port.
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
                                 <StaticAction vt=""8"">http://www.northwindtraders.com/Service/Operation</StaticAction>
                                 <EndpointBehaviorConfiguration vt=""8""><behavior name=""sampleBehavior""><callbackTimeouts /></behavior></EndpointBehaviorConfiguration>
                                 <BindingType vt=""8"">netNamedPipeBinding</BindingType>
                               </CustomProps>";
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new BizTalk application
Application application = explorer.AddNewApplication();
application.Name = "SampleBizTalkApplication";
// Save
explorer.SaveChanges();

// Add a new static one-way send port
SendPort sendPort = application.AddNewSendPort(false, false);
sendPort.Name = "SampleSendPort";
sendPort.PrimaryTransport.TransportType = explorer.ProtocolTypes["WCF-Custom"];
sendPort.PrimaryTransport.Address = "net.pipe://mycomputer/private/samplequeue";
sendPort.PrimaryTransport.TransportTypeData = transportConfigData; // propertyData; // need to change
sendPort.SendPipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruTransmit"];
// Save
explorer.SaveChanges();

另请参阅

WCF 适配器属性架构和属性指定 WCF 适配器的消息正文为 WCF 适配器安装证书配置 WCF-Custom 适配器使用 WCF 适配器上下文属性配置动态发送端口<绑定><终结点行为><>