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