配置 WCF-NetTcp 发送端口

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

配置属性

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

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

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

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

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

默认值为空字符串。
StaticAction 字符串 指定传出消息的 SOAPAction 标头字段。 也可以通过消息上下文属性 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) 攻击的可能性。

WCF-NetTcp 适配器利用缓冲传输模式下的 NetTcpBinding 类与终结点通信。 对于缓冲传输模式, NetTcpBinding.MaxBufferSize 属性始终等于此属性的值。

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

默认值:False
TransactionProtocol 枚举

- OleTransaction
- WS-AtomicTransaction
指定要与此绑定一起使用的事务协议。

默认值: OleTransaction
SecurityMode 枚举

- 无
- 消息
- 运输
- TransportWithMessageCredential

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

默认值: 传输
TransportClientCredentialType 枚举

- 无
- Windows
- 证书

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

默认值: Windows
TransportProtectionLevel 枚举

- - 无保护。
- 签名 - 消息已签名。
- EncryptAndSign - 对消息进行加密和签名。
指定 TCP 传输级别的安全性。 消息签名降低了在消息传输过程中第三方对消息进行篡改的风险。 加密为传输过程提供了数据级保密功能。

默认值: EncryptAndSign
MessageClientCredentialType 枚举

- 无
- Windows
- 用户
- 证书

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

默认值: Windows
AlgorithmSuite 枚举

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

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

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

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

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

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

默认值: XML
PropagateFaultMessage 布尔

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

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

默认值:True

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

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

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

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

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

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

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

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

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

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

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

<CustomProps>

  <UseSSO vt="11">0</UseSSO>
  <InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
  <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>
  <AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
  <SecurityMode vt="8">Transport</SecurityMode>
  <TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
  <ClientCertificate vt="8" />
  <TransactionProtocol vt="8">OleTransactions</TransactionProtocol>
  <MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
  <StaticAction vt="8">http://www.northwindtraders.com/Service/Operation</StaticAction>
  <TransportProtectionLevel vt="8">EncryptAndSign</TransportProtectionLevel>
  <CloseTimeout vt="8">00:01:00</CloseTimeout>
  <EnableTransaction vt="11">0</EnableTransaction>
  <InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
  <PropagateFaultMessage vt="11">-1</PropagateFaultMessage>
  <OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>

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

// Use BizTalk Explorer object model to create new WCF-NetTcp 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>
<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-NetTcp"];
sendPort.PrimaryTransport.Address = "net.tcp://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-NetTcp 适配器配置动态发送端口使用 WCF 适配器上下文属性