如何配置 WCF-Custom 发送端口

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

配置属性

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

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

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

  • 属性名称标识

    • 类型:XML Blob

      例如:

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

      默认值为空字符串。

  • 属性名称StaticAction

    • 类型:字符串

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

      如果以操作映射格式设置此属性,则传出 SOAPAction 标头由 BTS 确定。操作 上下文属性。 例如,如果此属性设置为以下 XML 格式和 BTS。操作 属性设置为 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。 管道组件中的操作属性。

      默认值为空字符串。

  • 属性名称BindingType

    • 类型:枚举

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

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

      如果使用自定义绑定,可以使用自定义绑定配置 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>
      
    • 说明:使用 元素的 <endpointBehaviors> 元素指定 XML 字符串<behavior>,以配置 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 编码
      • 十六进制:十六进制编码
      • 字符串:文本编码;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 属性配置包括 wsFederationHttpBindingcustomBinding 元素的绑定信息<issuer>。 此属性的所有引用绑定配置都必须以 元素的形式 <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 自定义传输属性 ”对话框中的“ 常规 ”选项卡上,为 WCF-Custom 发送端口配置终结点地址、服务标识和 SOAPAction 标头。 有关“WCF-自定义传输属性”对话框中的“常规”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF 自定义传输属性对话框、发送、常规选项卡。

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

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

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

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

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

以编程方式配置 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 适配器上下文属性<绑定><的 endpointBehaviors> 的行为><