可以为 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 的上下文属性中设置实际操作,如上所示。