可以在 WCF 发送适配器传输属性对话框或业务流程 表达式 形状中设置 WCF.Action 上下文属性。 如果在业务流程中设置 WCF.Action 上下文属性,则需要在静态发送端口的 WCF 适配器传输属性对话框中将 Action字段留空。 如果您在静态发送端口中指定操作,则在业务流程中设置的 WCF.Action 上下文属性将被重写。
此外,还有两种方法可以指定此属性:单动作格式和动作映射格式。 如果将此属性设置为单个操作格式(例如,http://MyService/IMyContract/MyAction1),那么传出消息的 WCF 发送适配器传输属性对话框中的 SOAP 操作总是设置为此属性中指定的值。 或者,可以在编排 表达式 形状中设置单个操作格式。 例如,
OutboundMessage(WCF.Action)="http://MyService/IMyContract/MyAction1";
如果您在动作映射格式中设置此属性,则传出的 SOAP 操作由 BTS.Operation 上下文属性确定。 例如,如果在 WCF 发送适配器传输属性对话框中将该属性设置为以下 XML 格式,并且在业务流程的发送端口中将 BTS.Operation 属性设置为 Operation_1,则 WCF 发送适配器将使用 http://MyService/IMyContract/MyAction1 作为传出的 SOAP 操作。
BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Operation Name="Operation_1" Action="http://MyService/IMyContract/MyAction1" />
<Operation Name="Operation_2" Action="http://MyService/IMyContract/MyAction2" />
<Operation Name="Operation_3" Action="http://MyService/IMyContract/MyAction3" />
</BtsActionMapping>
在表达式形状中指定WCF.Action的动作映射是不支持的。 需要在 WCF 传输属性对话框中指定操作映射。 然后,WCF 适配器将使用 BTS.Operation 上下文属性来查找 SOAP 动作,该属性由业务流程设置为发送消息的端口上的操作名称。
如果传出消息使用基于内容的路由(CBR)且 http://schemas.microsoft.com/BizTalk/2003/system-properties#Operation
属性未设置,WCF 发送适配器将把整个操作映射字符串设置为传出 WCF 消息的操作。 若要解决此问题,可以执行以下作之一:
将发送端口上的操作字段设置为
http://MyService/IMyContract/MyAction1
。设置管道中的 BTS.Operation 上下文属性。 例如,将值
http://schemas.microsoft.com/BizTalk/2003/system-properties#Operation
设置为 Operation1。请将动作字段留空,然后使用传入消息中的动作。
还可以使用 BizTalk WCF 服务使用向导工具通过单个操作或操作映射来使用 WCF 服务。 有关详细信息,请参阅 如何使用 BizTalk WCF 服务使用向导来使用 WCF 服务。