使用 WCF 适配器上下文属性配置动态发送端口

可以为 WCF 适配器配置动态发送端口。 URI、动作和绑定可以从传入消息的属性确定,然后在表达式形状中指定,如以下 WCF-NetTcp 适配器中所示:

MessageOut=MessageIn;  
MessageOut(WCF.Action)="http://tempuri.org/IReceiveMessage/ReceiveMessage";  
MessageOut(WCF.SecurityMode)="Transport";  
MessageOut(WCF.TransportClientCredentialType)="Windows";  
DynamicSendPort(Microsoft.XLANGs.BaseTypes.Address)="net.tcp://localhost:8001/netTcp";  
DynamicSendPort(Microsoft.XLANGs.BaseTypes.TransportType)="WCF-NetTcp";  

以下代码演示了如何在 WCF-Custom 适配器的 表达式 形状中指定 WCF 上下文属性的示例:

MessageOut=MessageIn;  
MessageOut(WCF.BindingType)="customBinding";  
MessageOut(WCF.Action)="http://tempuri.org/IReceiveMessage/ReceiveMessage";  
MessageOut(WCF.BindingConfiguration)=@"<binding name=""customBinding""><binaryMessageEncoding /><tcpTransport /></binding>";  
DynamicSendPort(Microsoft.XLANGs.BaseTypes.Address)="net.tcp://localhost:8001/customNetTcp";  
DynamicSendPort(Microsoft.XLANGs.BaseTypes.TransportType)="WCF-Custom";  

指定 WCF 上下文属性时的注意事项如下:

  • 有一些地址可以映射到多个适配器。 例如,以 http:// 或 https:// 开头的地址可由 HTTP 适配器以及 WCF-BasicHttp、WCF-WsHttp 或 WCF-Custom 适配器处理。 对于另一个示例,在上面的示例代码中,这两个示例都使用地址以 net.tcp://开头,但由于第二个示例代码使用自定义绑定,因此应使用 WCF-Custom 适配器来处理地址。 因此,若要标识正确的适配器,必须使用要使用的适配器在表达式形状中配置可选的 Microsoft.XLANGs.BaseTypes.TransportType 字段。

    注释

    如果地址以 http:// 或 https:// 开头,并且默认情况下未指定 Microsoft.XLANGs.BaseTypes.TransportType 字段,BizTalk 引擎将使用 HTTP 适配器。

  • WCF.BindingType 按名称识别绑定。 该参数可以是下列值之一:

    • basicHttpBinding

    • 自定义绑定

    • netMsmqBinding

    • netNamedPipeBinding

    • netTcpBinding

    • wsFederationHttpBinding

    • wsHttpBinding

      可以扩展上述列表。 例如,可以向其添加自己的绑定,例如 FtpBinding。

  • WCF。BindingConfiguration 指定绑定类型的绑定配置。 它接受在计算机配置文件中注册的所有绑定。 它还采用与 WCF 配置文件中的绑定配置中使用的格式相同的 XML 配置。

  • 可能需要指定其他 WCF 属性。 可以在表达式编辑器中键入 WCF,IntelliSense 功能应列出所有可用的上下文属性。 有关 WCF 上下文属性的详细信息,请参阅 WCF 适配器属性架构和属性

    前面的示例展示了如何使用单个操作配置WCF.Action。 对于多个操作映射方案,WCF 适配器不支持在动态发送端口中使用多个操作映射。 只需在 WCF.Action 的上下文属性中设置实际操作,如上所示。

另请参阅

为 WCF 发送适配器指定 SOAP 操作
如何使用表达式将值分配给动态端口
端口绑定