配置 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 | 字符串 | 指定代理服务器的地址。 根据安全配置使用 https 或 http 方案。 此地址可以后跟冒号和端口号,例如 http://127.0.0.1:8080 。 默认值为空字符串。 |
ProxyUserName | 字符串 | 指定用于代理的用户名。 WCF-WSHttp 适配器利用缓冲传输模式下的 WSHttpBinding 与终结点通信。 WSHttpBinding 的代理凭据仅在安全模式为“传输”或“无”时才适用。 如果将 SecurityMode 属性设置为 Message 或 TransportWithMessageCredential,WCF-WSHttp 适配器不会使用 ProxyUserName 和 ProxyPassword 属性中指定的凭据对代理进行身份验证。 注意: 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 发送端口配置变量
在 BizTalk 管理控制台中,创建一个新的发送端口或双击某个现有发送端口以对其进行修改。 有关详细信息,请参阅 如何创建发送端口。 配置所有发送端口选项,并在“常规”选项卡的“传输”部分中为“类型”选项指定 WCF-WSHttp。
在“常规”选项卡上的“传输”部分中,单击“类型”旁边的“配置”按钮。
在 “WCF-WSHttp 传输属性 ”对话框中的“ 常规 ”选项卡上,为 WCF-WSHttp 发送端口配置终结点地址、服务标识和 SOAPAction HTTP 标头。 有关 WCF-WSHttp 传输属性对话框中的“常规”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框、发送、常规选项卡。
在 “WCF-WSHttp 传输属性 ”对话框中的“ 绑定 ”选项卡上,配置超时、编码和事务属性。 有关 WCF-WSHttp 传输属性对话框中的“绑定”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框、发送、绑定选项卡。
在 “WCF-WSHttp 传输属性 ”对话框的“ 安全性 ”选项卡上,定义 WCF-WSHttp 发送端口的安全功能。 有关 WCF-WSHttp 传输属性对话框中的“安全性”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框、发送、安全性选项卡。
在 “WCF-WSHttp 传输属性 ”对话框中的“ 代理 ”选项卡上,为 WCF-WSHttp 发送端口配置代理设置。 有关 WCF-WSHttp 传输属性对话框中的“代理”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-WSHttp 传输属性对话框、发送、代理选项卡。
在 “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 适配器上下文属性配置动态发送端口