使用 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

    • customBinding

    • netMsmqBinding

    • netNamedPipeBinding

    • netTcpBinding

    • wsFederationHttpBinding

    • wsHttpBinding

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

  • WCF。BindingConfiguration 指定绑定类型的绑定配置。 它会获取在计算机配置文件中注册的所有绑定。 它还会以 WCF 配置文件的绑定配置中所用的相同格式获取 XML 配置。

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

    前面的示例演示如何配置 WCF。具有单个操作 的操作。 对于具有多个操作映射的情况,WCF 适配器不支持将多个操作映射与动态发送端口一起使用。 只需在 WCF 中设置实际操作 即可。如 上所示的操作上下文属性。

另请参阅

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