可以通过编程方式或使用 BizTalk 管理控制台来配置 WCF-WSHttp 接收位置。
配置属性
BizTalk 资源管理器对象模型使你能够以编程方式创建和配置接收位置。 BizTalk 资源管理器对象模型公开IReceiveLocation 接收位置配置接口,该接口具有 TransportTypeData 读/写属性。 此属性接受一个WCF-WSHttp接收位置配置属性包,其形式为XML字符串的名称-值对。 若要在 BizTalk 资源管理器对象模型中设置此属性,必须设置 IReceiveLocation 接口的 InboundTransportLocation 属性。
无需设置 IReceiveLocation 接口的 TransportTypeData 属性。 如果未设置,WCF-WSHttp 适配器将使用 WCF-WSHttp 接收位置配置的默认值,如下表所示。
下表列出了可以在 bizTalk Explorer 对象模型中为 WCF-WSHttp 接收位置设置的配置属性。
| 属性名称 | 类型 | DESCRIPTION |
|---|---|---|
| 身份 | XML Blob 示例: <身份> <userPrincipalName value=“username@contoso.com” /> </身份> |
请指定此接收位置所提供服务的身份。 可以为 Identity 属性指定的值因安全配置而异。 这些设置使客户端能够对此接收位置进行身份验证。 在客户端和服务之间的握手过程中,Windows Communication Foundation (WCF) 基础结构将确保预期服务的标识与此元素的值匹配。 默认值为空字符串。 |
| OpenTimeout | System.TimeSpan | 指定一个时间跨度值,该值表示完成通道打开操作所提供的时间间隔。 默认值:00:01:00 |
| SendTimeout | System.TimeSpan | 指定一个时间跨度值,该值指示为发送操作完成所提供的时间间隔。 如果使用请求-响应接收端口,则此值指定整个交互完成的时间跨度,即使客户端返回大型消息也是如此。 默认值:00:01:00 |
| CloseTimeout | System.TimeSpan | 指定一个时间跨度值,该值表示为了完成通道关闭操作提供的时间间隔。 默认值:00:01:00 |
| MaxReceivedMessageSize | 整数 | 为可在网络上接收的消息(包括标头)指定最大大小(以字节为单位)。 消息的大小受为每个消息分配的内存量的约束。 可以使用此属性来限制拒绝服务(DoS)攻击的暴露。 默认值:65536 |
| MessageEncoding | 枚举 - 文本 - 使用短信编码器。 - Mtom - 使用消息传输优化机制 1.0 (MTOM) 编码器。 |
指定用于对 SOAP 消息进行编码的编码器。 默认值: 文本 |
| TextEncoding | 枚举 - unicodeFFF - Unicode BigEndian 编码。 - utf-16 - 16 位编码。 - utf-8 - 8 位编码 |
指定在 MessageEncoding 属性设置为 Text 时用于在绑定上发出消息的字符集编码。 默认值: utf-8 |
| EnableTransaction | 布尔型 | 指定是否使用从客户端流动的事务将消息提交到 MessageBox 数据库。 如果此属性是 True,则客户端需要使用 WS-AtomicTransaction 协议提交消息。 如果客户端在事务范围之外提交消息,则此接收位置会将异常返回给客户端,并且不会挂起任何消息。此选项仅适用于单向接收位置。 如果客户端在事务上下文中提交请求响应接收位置的消息,则会将异常返回给客户端,并且不会挂起任何消息。 默认值: False |
| MaxConcurrentCalls | 整数 | 指定对单个服务实例的并发调用数。 超出限制的电话调用将排队。 此属性的范围从 1 到 Int32.MaxValue。 默认值:200 |
| SecurityMode | 枚举 - 没有 - 消息 - 运输 - TransportWithMessageCredential 有关 SecurityMode 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-WSHttp 传输属性”对话框中的安全模式属性、“接收”、“安全”选项卡。 |
指定所使用的安全类型。 默认值: 消息 |
| TransportClientCredentialType | 枚举 - 没有 - 基本 - Ntlm - Windows - 证书 有关 TransportClientCredentialType 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间引用中的“WCF-WSHttp 传输客户端凭据类型”对话框中的“接收”、“安全性”选项卡。 |
指定执行客户端身份验证时要使用的凭据类型。 默认值: Windows |
| MessageClientCredentialType | 枚举 - 没有 - Windows - UserName - 证书 有关 MessageClientCredentialType 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-WSHttp 传输属性”对话框中的“消息客户端凭据类型”属性、“接收”、“安全性”选项卡。 |
指定使用基于消息的安全性执行客户端身份验证时要使用的凭据类型。 默认值: Windows |
| AlgorithmSuite | 枚举 有关 AlgorithmSuite 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-WSHttp 传输属性”对话框中的“算法”套件属性、“接收”、“安全”选项卡。 |
指定消息加密和密钥包装算法。 这些算法映射到安全策略语言(WS-SecurityPolicy)规范中指定的算法。 默认值: Basic256 |
| NegotiateServiceCredential | 布尔型 | 指定服务凭据是在客户端带外预配,还是通过协商过程从服务获取。 这种谈判是通常的信息交换的前兆。 如果 MessageClientCredentialType 属性等于 None、 Username 或 Certificate,则此属性设置为 False 意味着服务证书在客户端带外可用,并且客户端需要指定服务证书。 此模式与实现 WS-Trust 和 WS-SecureConversation 的 SOAP 堆栈互作。 如果 MessageClientCredentialType 属性设置为 Windows,请将此属性设置为 False 指定基于 Kerberos 的身份验证。 这意味着客户端和服务必须是同一 Kerberos 域的一部分。 此模式与实现 Kerberos 令牌配置文件(在 OASIS WSS TC 中定义)以及 WS-Trust 和 WS-SecureConversation 的 SOAP 堆栈互作。 如果此属性为 True,则会引发 .NET SOAP 协商,将 SPNego 交换隧道化到 SOAP 消息中。 默认值: True |
| EstablishSecurityContext | 布尔型 | 指定安全通道是否建立安全会话。 在交换应用程序消息之前,安全会话会建立安全上下文令牌(SCT)。 默认值: True |
| ServiceCertificate | 字符串 | 请为客户端用来验证该服务的接收位置指定 X.509 证书的指纹。 要用于此属性的证书必须安装到“当前用户”位置的“我的存储”中。
注意: 必须将服务证书安装到承载此接收位置的接收处理程序的用户帐户的 当前用户 位置。 默认值为空字符串。 |
| UseSSO | 布尔型 | 指定是否使用企业单一 Sign-On(SSO)检索客户端凭据来颁发 SSO 票证。 有关支持 SSO 的安全配置的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-WSHttp 传输属性”对话框中的“WCF-WSHttp 接收适配器的企业单一 Sign-On 可支持性”部分。 |
| 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 |
| OutboundBodyLocation | 枚举 - UseBodyElement - 使用 BizTalk 消息正文部件为传出响应消息创建 SOAP 正文 元素的内容。 - UseTemplate - 使用 OutboundXMLTemplate 属性中提供的模板为传出响应消息创建 SOAP Body 元素的内容。 有关如何使用 OutboundBodyLocation 属性的详细信息,请参阅 指定 WCF 适配器的消息正文。 |
指定传出 WCF 消息的 SOAP Body 元素的数据选择。 此属性仅适用于请求-响应接收位置。 默认值: UseBodyElement |
| OutboundXMLTemplate | 字符串 有关如何使用 OutboundXMLTemplate 属性的详细信息,请参阅 指定 WCF 适配器的消息正文。 |
为传出响应消息的 SOAP Body 元素的内容指定 XML 格式的模板。 如果 OutboundBodyLocation 属性设置为 UseTemplate,则此属性是必需的。 此属性仅适用于请求-响应接收位置。 默认值为空字符串。 |
| 失败时暂停消息 | 布尔型 | 指定是否因接收管道故障或路由失败, 而挂起入站处理失败的请求消息。 默认值: True |
| IncludeExceptionDetailInFaults | 布尔型 | 指定是否在返回给客户端的 SOAP 错误的详细信息中包含托管异常信息,以便进行调试。 默认值: False |
使用 BizTalk 管理控制台配置 WCF-WSHttp 接收位置
可以在 BizTalk 管理控制台中设置 WCF-WSHttp 接收位置适配器变量。 如果未在接收位置设置属性,将使用 BizTalk 管理控制台中设置的默认接收处理程序值。
注释
在完成以下过程之前,必须已添加接收端口。 有关详细信息,请参阅 如何创建接收端口。
为 WCF-WSHttp 接收位置配置变量
在 BizTalk 管理控制台中,展开 BizTalk Server 管理、BizTalk 组、应用程序,然后展开要在其中创建接收位置的应用程序。
在 BizTalk 管理控制台的左窗格中,单击 “接收端口 ”节点。 然后在右窗格中,右键单击与现有接收位置关联的接收端口或要与新接收位置关联的接收端口,然后单击“ 属性”。
在 “接收端口属性 ”对话框中的左窗格中,选择“ 接收位置”,然后在右窗格中双击现有接收位置,或单击“ 新建”创建新的接收位置。
在“接收位置属性”对话框中,在“类型”旁边的“传输”部分中,从下拉列表中选择 WCF-WSHttp,然后单击“配置”。
在 “WCF-WSHttp 传输属性 ”对话框中的“ 常规 ”选项卡上,为 WCF-WSHttp 接收位置配置终结点地址和服务标识。 有关“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 传输属性 ”对话框中的“ 消息 ”选项卡上,指定 SOAP 正文 元素的数据选择。 有关“WCF-WSHttp 传输属性”对话框中的“消息”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“WCF-WSHttp 传输属性”对话框、“接收”、“消息”选项卡。
以编程方式配置 WCF-WSHttp 接收位置
可以使用以下格式设置属性:
<CustomProps>
<InboundBodyPathExpression vt="8" />
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<UseSSO vt="11">0</UseSSO>
<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">Message</SecurityMode>
<TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
<NegotiateServiceCredential vt="11">-1</NegotiateServiceCredential>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<TextEncoding vt="8">utf-8</TextEncoding>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
<EnableTransaction vt="11">0</EnableTransaction>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<EstablishSecurityContext vt="11">-1</EstablishSecurityContext>
<IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
<MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
<ServiceCertificate 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 receive location
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<InboundBodyLocation vt=""8"">UseBodyElement</InboundBodyLocation>
<UseSSO vt=""11"">0</UseSSO>
<Identity vt=""8"">
<identity>
<userPrincipalName value=""username@contoso.com"" />
</identity>
</Identity>
</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 = "SampleBizTalkApplication1001";
// Save
explorer.SaveChanges();
// Add a new one-way receive port
IReceivePort receivePort = application.AddNewReceivePort(false);
receivePort.Name = "SampleReceivePort";
// Add a new one-way receive location
IReceiveLocation receiveLocation = receivePort.AddNewReceiveLocation();
receiveLocation.Name = "SampleReceiveLocation";
// Find a receive handler for WCF-WSHttp
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
if("WCF-WSHttp" == explorer.ReceiveHandlers[i].TransportType.Name)
break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "/samplepath/sampleservice.svc";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-WSHttp"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();
另请参阅
使用独立 WCF 接收适配器发布 WCF 服务
为独立 WCF 接收适配器配置 IIS
管理 BizTalk 主机和主机实例
如何更改服务帐户和密码
用于 WCF 适配器的证书安装
为 WCF 适配器指定消息体
配置 WCF-WSHttp 适配器