可以通过编程方式或使用 BizTalk 管理控制台配置 WCF-Custom 发送端口。
配置属性
BizTalk 资源管理器对象模型为发送端口公开一个适配器特定的接口,该接口名为 ITransportInfo,并具有 TransportTypeData 读/写属性。 此属性接受一个 WCF-Custom 发送端口配置属性包,该包以 XML 字符串的名称-值对形式存在。
无需 ITransportInfo 接口的 TransportTypeData 属性。 如果未设置,适配器将使用 WCF-Custom 发送端口配置的默认值,如下表所示。
以下列表描述了可在 BizTalk 资源管理器对象模型中为 WCF-Custom 发送端口设置的配置属性:
属性名称: 标识
类型:XML Blob
示例:
<identity> <userPrincipalName value="username@contoso.com" /> </identity>
说明:指定此发送端口所需的服务标识。 这些设置使此发送端口能够对服务进行身份验证。 在客户端和服务之间的握手过程中,WCF 基础结构将确保预期服务的标识与此元素的值匹配。 可以为 Identity 属性指定的值因安全配置而异。
默认值为空字符串。
属性名称: StaticAction
类型:字符串
说明:指定传出消息的 SOAPAction 标头字段。 还可以通过管道或流程编排中的消息上下文属性 WCF.Action 设置此属性。 可以通过两种不同的方式指定此值:单一动作格式和动作映射格式。 如果将此属性设置为单个操作格式,例如
http://contoso.com/Svc/Op1
,则传出消息的 SOAPAction 标头始终设置为此属性中指定的值。如果在动作映射格式中设置此属性,传出的 SOAPAction 标头由 BTS.Operation 上下文属性确定。 例如,如果此属性设置为以下 XML 格式并且 BTS.Operation 属性设置为 Op1,那么 WCF 发送适配器使用
http://contoso.com/Svc/Op1
作为传出的 SOAPAction 标头。<BtsActionMapping> <Operation Name="Op1" Action="http://contoso.com/Svc/Op1" /> <Operation Name="Op2" Action="http://contoso.com/Svc/Op2" /> </BtsActionMapping>
如果传出消息来自业务流程端口,业务流程实例会动态设置 BTS.Operation 属性为端口的操作名称。 如果传出消息是通过基于内容的路由进行的,则可以在管道组件中设置 BTS.Operation 属性。
默认值为空字符串。
属性名称: BindingType
类型:枚举
有关 BindingType 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框中的“绑定类型”属性、“发送”、“绑定”选项卡。
说明:指定要用于此发送端口使用的终结点的绑定的类型。
如果使用自定义绑定,则可以使用自定义绑定配置 BindingType 属性。 有关如何使用自定义绑定的详细信息,请参阅 如何使用 WCF 适配器启用 WCF 扩展点。
属性名称: BindingConfiguration
类型:XML Blob
示例:
<binding name="netNamedPipeBinding"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <security mode="None" /> </binding>
说明:指定包含
<binding>
元素的 XML 字符串,以配置由 Windows Communication Foundation (WCF) 提供的不同类型的预定义绑定。 有关系统提供的绑定和自定义绑定的详细信息,请参阅“另请参阅”中列出的相应主题。BizTalk Server 不支持可以使用 BindingConfiguration 属性配置的绑定扩展元素的所有类型。
默认值为空字符串。
属性名称: EndpointBehaviorConfiguration
类型:XML Blob
示例:
<behavior name="sampleBehavior"> <callbackTimeouts /> </behavior>
说明:指定一个包含
<behavior>
元素的<endpointBehaviors>
元素的 XML 字符串,以配置 WCF 终结点的行为设置。 有关该元素的详细信息<endpointBehaviors>
,请参阅“另请参阅”中的相应主题。BizTalk Server 不支持可以使用 EndpointBehaviorConfiguration 属性配置的所有类型的行为扩展元素。
默认值为空字符串。
属性名称: AffiliateApplicationName
类型:字符串
说明:指定要用于企业单一 Sign-On(SSO)的关联应用程序。
默认值为空字符串。
属性名称: UseSSO
类型:布尔值
说明:指定是否使用单 Sign-On 检索客户端凭据以与目标服务器进行身份验证。
默认值: False
属性名称: UserName
类型:字符串
说明:将 UseSSO 属性设置为 False 时,指定要用于向目标服务器进行身份验证的用户名。 不必对此属性使用
domain\user
格式。默认值为空字符串。
属性名称: 密码
类型:字符串
说明:将 UseSSO 属性设置为 False 时,指定用于向目标服务器进行身份验证的密码。
默认值为空字符串。
属性名称: OutboundBodyLocation
类型:枚举
- UseBodyElement:使用 BizTalk 消息正文部件为传出消息创建 SOAP Body 元素的内容。
- UseTemplate:使用 OutboundXMLTemplate 属性中提供的模板为传出消息创建 SOAP Body 元素的内容。
有关如何使用 OutboundBodyLocation 属性的详细信息,请参阅 指定 WCF 适配器的消息正文。
说明:指定传出 WCF 消息的 SOAP Body 元素的数据选择。
默认值: UseBodyElement
属性名称: OutboundXMLTemplate
类型:字符串
有关如何使用 OutboundXMLTemplate 属性的详细信息,请参阅 指定 WCF 适配器的消息正文。
说明:为传出消息的 SOAP Body 元素的内容指定 XML 格式的模板。 如果 OutboundBodyLocation 属性设置为 UseTemplate,则此属性是必需的。
默认值为空字符串。
属性名称: InboundBodyLocation
类型:枚举
- UseBodyElement:使用传入消息的 SOAP Body 元素的内容来创建 BizTalk 消息正文部件。 如果 Body 元素具有多个子元素,则只有第一个元素成为 BizTalk 消息正文部分。 此属性仅适用于请求响应端口。
- UseEnvelope:从传入消息的整个 SOAP 信封 创建 BizTalk 消息正文部分。
- UseBodyPath:使用 InboundBodyPathExpression 属性中的正文路径表达式创建 BizTalk 消息正文部件。 根据传入消息的 SOAP Body 元素的即时子元素计算正文路径表达式。 此属性仅适用于请求响应端口。
有关如何使用 InboundBodyLocation 属性的详细信息,请参阅 指定 WCF 适配器的消息正文。
说明:指定传入 WCF 消息的 SOAP Body 元素的数据选择。
默认值: UseBodyElement
属性名称: InboundBodyPathExpression
类型:字符串
有关如何使用 InboundBodyPathExpression 属性的详细信息,请参阅 WCF 适配器属性架构和属性。
说明:指定正文路径表达式以标识用于创建 BizTalk 消息正文部件的传入消息的特定部分。 此正文路径表达式根据传入消息的 SOAP 正文 节点的直接子元素计算。 如果此正文路径表达式返回多个节点,则仅为 BizTalk 消息正文部分选择第一个节点。 如果将 InboundBodyLocation 属性设置为 UseBodyPath,则需要此属性。 此属性仅适用于请求响应端口。
默认值为空字符串。
属性名称: InboundNodeEncoding
类型:枚举
- XML
- Base64:Base64 编码
- Hex: 十六进制编码
- 字符串:文本编码;UTF-8
- XML:WCF 适配器通过使用 InboundBodyPathExpression 中指定的正文路径表达式,选取节点并利用其外层 XML 来创建 BizTalk 消息正文。
说明:指定 WCF-Custom 发送适配器使用的编码类型,以解码 InboundBodyPathExpression 中指定的正文路径标识的节点。 如果将 InboundBodyLocation 属性设置为 UseBodyPath,则需要此属性。 此属性仅适用于请求响应端口。
默认值: XML
属性名称: PropagateFaultMessage
类型:布尔值
- True:将出站处理失败的消息路由到订阅应用程序(例如另一个接收端口或业务流程计划)。
- False:暂停失败的消息并生成否定确认(NACK)。
说明:指定在出站处理中失败的消息是路由还是挂起。
此属性仅适用于请求响应端口。
默认值: True
属性名称: ReferencedBindings
类型:XML Blob
示例:
<BindingConfiguration vt="8"> <wsFederationHttpBinding> <binding name="sampleBinding"> <security mode="Message"> <message issuedKeyType="AsymmetricKey"> <issuer address="http://www.contoso.com/samplests" binding="wsFederationHttpBinding" bindingConfiguration="contosoSTSBinding"/> </message> </security> </binding> </wsFederationHttpBinding> </BindingConfiguration> <ReferencedBindings vt="8"> <bindings> <wsFederationHttpBinding> <binding name="contosoSTSBinding"> <security mode="Message"> <message negotiateServiceCredential="false"> <issuer address="http://northwind.com/samplests" bindingConfiguration="northwindBinding" binding="wsHttpBinding"> </issuer> </message> </security> </binding> </wsFederationHttpBinding> <wsHttpBinding> <binding name="northwindBinding"> <security mode="Message"> <message clientCredentialType="Certificate" /> </security> </binding> </wsHttpBinding> </bindings> </ReferencedBindings>
ReferencedBinding 属性不得包含 BindingConfiguration 属性中使用的绑定配置。
说明:指定 wsFederationHttpBinding 和 customBinding 的
<issuer>
元素中由 bindingConfiguration 属性引用的绑定配置,该配置指示颁发安全令牌的安全令牌服务(STS)。 有关<issuer>
元素的详细信息,请参阅 WCF 配置架构:<issuer>
。可以通过 WCF-Custom 和 WCF-CustomIsolated 适配器的 BindingConfiguration 属性来配置包括
<issuer>
元素在内的绑定信息,如 wsFederationHttpBinding 和 customBinding。 此属性的所有引用绑定配置都必须以<bindings>
元素的形式放置。无法在传输属性对话框中的“ 绑定 ”选项卡上配置此属性。 可以通过 WCF-Custom 和 WCF-CustomIsolated 适配器的传输属性对话框中的 “导入/导出 ”选项卡导入和导出此属性。
元素的
<issuer>
bindingConfiguration 属性必须引用此属性中的有效绑定名称。<issuer>
如果引用链不生成循环依赖项,则引用绑定配置中的元素还可以引用此属性中的其他绑定配置。默认值为空字符串。
使用 BizTalk 管理控制台配置 WCF-Custom 发送端口
可以在 BizTalk 管理控制台中设置 WCF-Custom 发送端口适配器变量。 如果未为发送端口设置属性,则使用 WCF-Custom 发送端口配置的默认值,如上表中所示。
为 WCF-Custom 发送端口配置变量
如果计划在配置 WCF-Custom 适配器时使用 WCF 扩展点(如自定义绑定元素、自定义行为元素和自定义通道组件),则必须将实现扩展点的程序集和所有依赖程序集添加到 BizTalk 处理计算机(运行时计算机)和管理计算机上的全局程序集缓存中。 此外,必须将扩展组件注册到 machine.config 文件。 有关如何将 WCF 扩展点与 WCF 自定义适配器配合使用的详细信息,请参阅 如何使用 WCF 适配器启用 WCF 扩展点。
在 BizTalk 管理控制台中,创建新的发送端口,或双击现有发送端口对其进行修改。 有关详细信息,请参阅 如何创建发送端口。 配置所有发送端口选项,并在 UI 指南和开发人员 API 命名空间引用的“常规”选项卡的“传输”部分中为“类型”选项指定 WCF-Custom。
在“常规”选项卡上的“传输”部分中,单击“类型”旁边的“配置”按钮。
在 “WCF-Custom 传输属性 ”对话框中的“ 常规 ”选项卡上,配置 WCF-Custom 发送端口的终结点地址、服务标识和 SOAPAction 标头。 有关“WCF-Custom 传输属性”对话框中的“常规”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“常规”选项卡。
在 “WCF-Custom 传输属性 ”对话框中的“ 绑定 ”选项卡上,为 WCF 配置不同类型的预定义或自定义绑定。 有关“WCF-Custom 传输属性”对话框中的“绑定”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“绑定”选项卡。
在 “WCF-Custom 传输属性 ”对话框中的“ 行为 ”选项卡上,为此发送端口配置终结点行为。 终结点行为是一组修改或扩展服务或客户端功能的行为扩展元素。 有关“WCF-Custom 传输属性”对话框中的“行为”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“行为”选项卡。
在 “WCF-Custom 传输属性 ”对话框中的“ 凭据 ”选项卡上,指定要在发送消息时使用的凭据。 有关“WCF-Custom 传输属性”对话框中的“凭据”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“凭据”选项卡。
在 “WCF-Custom 传输属性 ”对话框中的“ 消息 ”选项卡上,指定 SOAP 正文 元素的数据选择。 有关“WCF-Custom 传输属性”对话框中的“消息”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“消息”选项卡。
在“WCF-Custom 传输属性”对话框中的“导入/导出”选项卡上,导入和导出“常规”选项卡上的“地址”(URI)和“终结点标识”属性、绑定信息以及此发送端口的“行为”选项卡上的终结点行为。 有关“WCF-Custom 传输属性”对话框中的“导入/导出”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-Custom 传输属性”对话框、“发送”、“导入-导出”选项卡。
以编程方式配置 WCF-Custom 发送端口
可以使用以下格式设置属性:
<CustomProps>
<OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
<InboundBodyPathExpression vt="8" />
<EndpointBehaviorConfiguration vt="8"><behavior name="sampleBehavior"><callbackTimeouts /></behavior></EndpointBehaviorConfiguration>
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
<StaticAction vt="8">http://www.northwindtraders.com/Service/Operation</StaticAction>
<BindingConfiguration vt="8"><binding name="NetNamedPipeOrderProcessService.OrderProcessServieEndpoint"><readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /><security mode="None" /></binding></BindingConfiguration>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<UseSSO vt="11">0</UseSSO>
<AffiliateApplicationName vt="8" />
<BindingType vt="8">netNamedPipeBinding</BindingType>
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<UserName vt="8" />
<PropagateFaultMessage vt="11">-1</PropagateFaultMessage>
</CustomProps>
以下代码片段演示如何创建 WCF-Custom 发送端口:
谨慎
此示例或指南引用敏感信息,例如连接字符串或用户名和密码。 切勿在代码中硬编码这些值,并确保使用最安全的身份验证来保护机密数据。 有关详细信息,请参阅以下文档:
// Use BizTalk Explorer object model to create new WCF-Custom send port.
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<StaticAction vt=""8"">http://www.northwindtraders.com/Service/Operation</StaticAction>
<EndpointBehaviorConfiguration vt=""8""><behavior name=""sampleBehavior""><callbackTimeouts /></behavior></EndpointBehaviorConfiguration>
<BindingType vt=""8"">netNamedPipeBinding</BindingType>
</CustomProps>";
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new BizTalk application
Application application = explorer.AddNewApplication();
application.Name = "SampleBizTalkApplication";
// Save
explorer.SaveChanges();
// Add a new static one-way send port
SendPort sendPort = application.AddNewSendPort(false, false);
sendPort.Name = "SampleSendPort";
sendPort.PrimaryTransport.TransportType = explorer.ProtocolTypes["WCF-Custom"];
sendPort.PrimaryTransport.Address = "net.pipe://mycomputer/private/samplequeue";
sendPort.PrimaryTransport.TransportTypeData = transportConfigData; // propertyData; // need to change
sendPort.SendPipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruTransmit"];
// Save
explorer.SaveChanges();
另请参阅
WCF 适配器属性架构和属性指定 WCF 适配器的消息正文为 WCF 适配器安装证书配置 WCF-Custom 适配器使用 WCF 适配器上下文属性配置动态发送端口<绑定><终结点行为><>