配置 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 发送端口配置变量
在 BizTalk 管理控制台中,创建一个新的发送端口或双击某个现有发送端口以对其进行修改。 有关详细信息,请参阅 如何创建发送端口。 配置所有发送端口选项,并在“常规”选项卡的“传输”部分中为“类型”选项指定 WCF-NetTcp。
在“常规”选项卡上的“传输”部分中,单击“类型”旁边的“配置”按钮。
在 “WCF-NetTcp 传输属性 ”对话框中的“ 常规 ”选项卡上,为 WCF-NetTcp 发送端口配置终结点地址、服务标识和 SOAPAction 标头。 有关 WCF-NetTcp 传输属性对话框中的“常规”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetTcp 传输属性对话框、发送、常规选项卡。
在 “WCF-NetTcp 传输属性 ”对话框中的“ 绑定 ”选项卡上,配置超时和事务属性。 有关“WCF-NetTcp 传输属性”对话框中的“绑定”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetTcp 传输属性对话框、发送、绑定选项卡。
在 “WCF-NetTcp 传输属性 ”对话框中的“ 安全性 ”选项卡上,定义 WCF-NetTcp 发送端口的安全功能。 有关“WCF-NetTcp 传输属性”对话框中的“安全性”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetTcp 传输属性对话框、发送、安全性选项卡。
在 “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 适配器上下文属性