配置 WCF-WSHttp 发送端口

可以通过编程方式或使用 BizTalk Server 管理控制台来配置 WCF-WSHttp 发送端口。

配置属性

BizTalk 资源管理器对象模型为具有 TransportTypeData 读/写属性的名为 ITransportInfo 的发送端口公开特定于适配器的接口。 此属性接受 XML 字符串的名称-值对形式的 WCF-WSHttp 发送端口配置属性包。

不需要 ITransportInfo 接口的 TransportTypeData 属性。 如果未设置该属性,则适配器将使用 WCF-WSHttp 发送端口配置的默认值,如下表所示。

下表列出了可在 BizTalk 浏览器对象模型中为 WCF-WSHttp 发送端口设置的配置属性。

属性名称 类型 说明
标识 XML Blob,例如:

<identity>
<userPrincipalName value="username@contoso.com">
</identity>
指定此发送端口预期的服务标识。 这些设置支持此发送端口对服务进行验证。 在客户端与服务进行握手的过程中,Windows Communication Foundation (WCF) 基础结构将确保预期服务的标识与此元素的值保持一致。

默认值为空字符串。
StaticAction -字符串 指定传出消息的 SOAPAction HTTP 标头字段。 也可以通过消息上下文属性 WCF 设置此属性 管道或业务流程中的操作。 可以通过两种不同的方式指定此值:单一操作格式和操作映射格式。 如果以单个操作格式(例如 )设置此属性, http://contoso.com/Svc/Op1则传出消息的 SOAPAction 标头始终设置为此属性中指定的值。

如果以操作映射格式设置此属性,则传出 SOAPAction 标头由 BTS 确定。操作 上下文属性。 例如,如果此属性设置为以下 XML 格式和 BTS。操作 属性设置为 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。 管道组件中的操作属性。

默认值为空字符串。
OpenTimeout System.TimeSpan 指定一个时间跨度值来表示为完成信道打开操作提供的时间间隔。

默认值:00:01:00
SendTimeout System.TimeSpan 指定一个时间跨度值来表示为完成发送操作提供的时间间隔。 如果使用要求-响应发送端口,则此值指定完成整个交互的时间跨度(即使服务返回一条大消息)。

默认值:00:01:00
CloseTimeout System.TimeSpan 指定一个时间跨度值来表示为完成信道关闭操作提供的时间间隔。

默认值:00:01:00
MaxReceivedMessageSize Integer 指定网络上可接收的消息的最大大小(包括标头),以字节为单位。 消息的大小受为每条消息分配的内存量的限制。 你可以使用此属性来降低受拒绝服务 (DoS) 攻击的可能性。

默认值:65536
MessageEncoding 枚举

- 文本 - 使用短信编码器。
- Mtom - 使用消息传输组织机制 1.0 (MTOM) 编码器。
指定用于对 SOAP 消息进行编码的编码器。

默认值: 文本
TextEncoding 枚举

- unicodeFFF - Unicode BigEndian 编码。
- utf-16 - 16 位编码。
- utf-8 - 8 位编码。
指定在 MessageEncoding 属性设置为 Text 时用于在绑定上发出消息的字符集编码。

默认值: utf-8
EnableTransaction 布尔 指定是否使用 WS-AtomicTransaction 协议将消息传输到目标服务并从事务上下文中的 MessageBox 数据库中删除。

默认值:False
SecurityMode 枚举

- 无
- 消息
- 运输
- TransportWithMessageCredential

有关 SecurityMode 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框中的“发送、安全性”选项卡中的安全模式属性。
指定使用的安全类型。

默认值:
TransportClientCredentialType 枚举

- 无
- 基本
- Windows
- 证书
- 消化
- Ntlm

有关 TransportClientCredentialType 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框中的“发送、安全性”选项卡中的传输客户端凭据类型属性。
指定执行发送端口验证时使用的凭据类型。

默认值:
MessageClientCredentialType 枚举

- 无
- Windows
- 用户
- 证书

有关 MessageClientCredentialType 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框中的“发送、安全性”选项卡中的消息客户端凭据类型属性。
指定使用基于消息的安全性对客户端执行验证时所用的凭据类型。

默认值: UserName
AlgorithmSuite 枚举

有关 AlgorithmSuite 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框中的“发送、安全性”选项卡中的算法套件属性。
指定消息加密和密钥包装算法。 这些算法与“安全策略语言”(WS-SecurityPolicy) 规范中指定的算法一致。

默认值: Basic256
NegotiateServiceCredential 布尔

有关 NegotiateServiceCredential 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框中的“发送、安全性”选项卡中的“协商服务凭据”属性。
指定是在此带外发送端口提供服务凭据,还是通过协商从服务获取服务凭据并发送到此发送端口。 这种协商是正常消息交换的前提。

默认值:False
EnableSecurityContext 布尔 指定是否通过此发送端口与服务之间的 WS-SecureConversation 交换来建立安全上下文令牌。 如果此属性设置为 True ,则目标服务必须支持 WS-SecureConversation

默认值:True
ClientCertificate 字符串 指定用于向服务验证此发送端口的 X.509 证书的指纹。 如果 ClientCredentialsType 属性设置为 Certificate,则此属性是必需的。 要用于此属性的证书必须安装在“当前用户”位置的“我的存储”中。

默认值为空字符串。
ServiceCertificate 字符串 指定用于验证服务(此发送端口要将消息发送到的服务)的 X.509 证书的指纹。 要用于此属性的证书必须安装到本地计算机位置的“其他人员存储中。

默认值为空字符串。
AffiliateApplicationName 字符串 指定用于企业单一登录 (SSO) 的关联应用程序。

默认值为空字符串。
UseSSO 布尔 指定是否使用单一登录检索客户端凭据,以便在目标服务器上进行验证。

默认值:False
UserName String UseSSO 属性设置为 False 时,指定用于对目标服务器进行身份验证的用户名。 不必采用“域\用户”格式设置此属性。

默认值为空字符串。
密码 字符串 UseSSO 属性设置为 False 时,指定用于对目标服务器进行身份验证的密码。

默认值为空字符串。
ProxyToUse 枚举

- - 不对此发送端口使用代理服务器。
- 默认值 - 在承载此发送端口的发送处理程序中使用代理设置。
- UserSpecified - 使用 ProxyAddress 属性中指定的代理服务器。
指定要用于传出 HTTP 通信的代理服务器。

默认值:
ProxyAddress 字符串 指定代理服务器的地址。 根据安全配置使用 httpshttp 方案。 此地址可以后跟冒号和端口号,例如 http://127.0.0.1:8080

默认值为空字符串。
ProxyUserName 字符串 指定用于代理的用户名。 WCF-WSHttp 适配器利用缓冲传输模式下的 WSHttpBinding 与终结点通信。 WSHttpBinding 的代理凭据仅在安全模式为“传输”或“”时才适用。 如果将 SecurityMode 属性设置为 MessageTransportWithMessageCredential,WCF-WSHttp 适配器不会使用 ProxyUserNameProxyPassword 属性中指定的凭据对代理进行身份验证。 注意: WCF-WSHttp 发送适配器使用代理的基本身份验证。

默认值为空字符串。
ProxyPassword 字符串 指定用于代理的密码。

默认值为空字符串。
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 枚举

- Base64 - Base64 编码。
- 十六进制 - 十六进制编码。
- 字符串 - 文本编码 - UTF-8。
- XML - WCF 适配器使用 InboundBodyPathExpression 中的正文路径表达式选择的节点的外部 XML 创建 BizTalk 消息正文。
指定 WCF-WSHttp 发送适配器用于解码 由 InboundBodyPathExpression 中指定的正文路径标识的节点的编码类型。 如果将 InboundBodyLocation 属性设置为 UseBodyPath,则需要此属性。 此属性仅对要求-响应端口有效。

默认值: XML
PropagateFaultMessage 布尔

- True - 将出站处理失败的消息路由到订阅应用程序 (,例如另一个接收端口或业务流程计划) 。
- False - 挂起失败的消息, (NACK) 生成否定确认。
指定是路由还是挂起在出站处理中失败的消息。

此属性仅对要求-响应端口有效。

默认值:True

使用 BizTalk 管理控制台配置 WCF-WSHttp 发送端口

您可以在 BizTalk 管理控制台中设置 WCF-WSHttp 发送端口适配器变量。 如果没有为发送端口设置属性,将使用 WCF-WSHttp 发送端口配置的默认值,如前表所示。

为 WCF-WSHttp 发送端口配置变量

  1. 在 BizTalk 管理控制台中,创建一个新的发送端口或双击某个现有发送端口以对其进行修改。 有关详细信息,请参阅 如何创建发送端口。 配置所有发送端口选项,并在“常规”选项卡的“传输”部分中为“类型”选项指定 WCF-WSHttp

  2. 在“常规”选项卡上的“传输”部分中,单击“类型”旁边的“配置”按钮。

  3. “WCF-WSHttp 传输属性 ”对话框中的“ 常规 ”选项卡上,为 WCF-WSHttp 发送端口配置终结点地址、服务标识和 SOAPAction HTTP 标头。 有关 WCF-WSHttp 传输属性对话框中的“常规”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框、发送、常规选项卡。

  4. “WCF-WSHttp 传输属性 ”对话框中的“ 绑定 ”选项卡上,配置超时、编码和事务属性。 有关 WCF-WSHttp 传输属性对话框中的“绑定”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框、发送、绑定选项卡。

  5. “WCF-WSHttp 传输属性 ”对话框的“ 安全性 ”选项卡上,定义 WCF-WSHttp 发送端口的安全功能。 有关 WCF-WSHttp 传输属性对话框中的“安全性”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框、发送、安全性选项卡。

  6. “WCF-WSHttp 传输属性 ”对话框中的“ 代理 ”选项卡上,为 WCF-WSHttp 发送端口配置代理设置。 有关 WCF-WSHttp 传输属性对话框中的“代理”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框、发送、代理选项卡。

  7. “WCF-WSHttp 传输属性 ”对话框中的“ 消息 ”选项卡上,指定 SOAP 正文 元素的数据选择。 有关 WCF-WSHttp 传输属性对话框中的“消息”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框、发送消息选项卡。

以编程方式配置 WCF-WSHttp 发送端口

可使用以下格式设置属性:

 <CustomProps>
  <ServiceCertificate vt="8" />
  <UseSSO vt="11">0</UseSSO>
  <InboundBodyPathExpression vt="8" />
  <MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
  <SendTimeout vt="8">00:01:00</SendTimeout>
  <OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
  <OpenTimeout vt="8">00:01:00</OpenTimeout>
  <Identity vt="8" />
  <AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
  <SecurityMode vt="8">Message</SecurityMode>
  <TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
  <TextEncoding vt="8">utf-8</TextEncoding>
  <NegotiateServiceCredential vt="11">-1</NegotiateServiceCredential>
  <MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
  <ClientCertificate vt="8" />
  <ProxyUserName vt="8" />
  <CloseTimeout vt="8">00:01:00</CloseTimeout>
  <ProxyToUse vt="8">Default</ProxyToUse>
  <EnableTransaction vt="11">0</EnableTransaction>
  <InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
  <InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
  <EstablishSecurityContext vt="11">-1</EstablishSecurityContext>
  <StaticAction vt="8">http://www.northwindtraders.com/Service/Operation</StaticAction>
  <PropagateFaultMessage vt="11">-1</PropagateFaultMessage>
  <ProxyAddress vt="8" />
  <MessageEncoding vt="8">Text</MessageEncoding>
  <OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>

下面的代码段说明了如何创建 WCF-WSHttp 发送端口:

// Use BizTalk Explorer object model to create new WCF-WSHttp 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>
                                 <MessageEncoding vt=""8"">Text</MessageEncoding>
                                 <TextEncoding vt=""8"">utf-8</TextEncoding>
                                 <OpenTimeout vt=""8"">00:01:00</OpenTimeout>
                               </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-WSHttp"];
sendPort.PrimaryTransport.Address = "http://mycomputer/samplepath";
sendPort.PrimaryTransport.TransportTypeData = transportConfigData; // propertyData; // need to change
sendPort.SendPipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruTransmit"];
// Save
explorer.SaveChanges();

另请参阅

WCF 适配器属性架构和属性配置 WCF-WSHttp 适配器指定 WCF 适配器的消息正文为 WCF 适配器安装证书使用 WCF 适配器上下文属性配置动态发送端口