定义一个安全、可靠且可互作的绑定,该绑定适用于双工服务协定或通过 SOAP 中介进行通信。
<configuration>
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
Syntax
<wsDualHttpBinding>
<binding name="String"
closeTimeout="TimeSpan"
openTimeout="TimeSpan"
receiveTimeout="TimeSpan"
sendTimeout="TimeSpan"
bypassProxyOnLocal="Boolean"
clientBaseAddress="URI"
transactionFlow="Boolean"
hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
maxBufferPoolSize="integer"
maxReceivedMessageSize="Integer"
messageEncoding="Text/Mtom"
proxyAddress="URI"
textEncoding="Unicode/BigEndianUnicode/UTF8"
useDefaultWebProxy="Boolean">
<reliableSession ordered="Boolean"
inactivityTimeout="TimeSpan" />
<security mode="None/Message">
<message clientCredentialType="None/Windows/UserName/Certificate/CardSpace"
negotiateServiceCredential="Boolean"
algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15" />
</security>
<readerQuotas maxArrayLength="Integer"
maxBytesPerRead="Integer"
maxDepth="Integer"
maxNameTableCharCount="Integer"
maxStringContentLength="Integer" />
</binding>
</wsDualHttpBinding>
特性和元素
以下部分介绍属性、子元素和父元素
特性
| Attribute | Description |
|---|---|
| bypassProxyOnLocal | 一个布尔值,该值指示是否绕过本地地址的代理服务器。 默认值为 false。 |
| clientBaseAddress | 一个 URI,用于设置客户端侦听服务响应消息的基址。 如果指定,此地址(加上每通道GUID)用于侦听。 如果未指定该值,则以特定于传输的方式生成客户端基址。 默认值为 null。 |
| closeTimeout | 一个 TimeSpan 值,该值指定为完成关闭作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。 |
| hostnameComparisonMode | 指定用于分析 URI 的 HTTP 主机名比较模式。 此属性的类型 HostNameComparisonMode,指示主机名在 URI 上匹配时是否用于访问服务。 默认值为 StrongWildcard忽略匹配项中的主机名。 |
| maxBufferPoolSize | 一个整数,指定此绑定的最大缓冲池大小。 默认值为 524,288 字节(512 * 1024)。 Windows Communication Foundation(WCF)的许多部分都使用缓冲区。 每次使用缓冲区时创建和销毁缓冲区的成本高昂,缓冲区的垃圾回收也非常昂贵。 使用缓冲池,可以从池中获取缓冲区,使用它,并在完成后将其返回到池。 因此,可以避免创建和销毁缓冲区的开销。 |
| maxReceivedMessageSize | 一个正整数,指定可在配置有此绑定的通道上接收的最大消息大小(以字节为单位),包括标头。 超出此限制的消息发送方将收到 SOAP 错误。 接收方删除消息,并在跟踪日志中创建事件的条目。 默认值为 65536。 |
| messageEncoding | 定义用于对消息进行编码的编码器。 有效值包括: - 文本:使用文本消息编码器。 - Mtom:使用消息传输组织机制 1.0 (MTOM) 编码器。 - 默认值为 Text。 此属性的类型 WSMessageEncoding为 . |
| 姓名 | 一个字符串,其中包含绑定的配置名称。 此值应是唯一的,因为它用作绑定的标识。 从 .NET Framework 4 开始,不需要绑定和行为才能具有名称。 有关默认配置和无名称绑定和行为的详细信息,请参阅 WCF 服务的 简化配置 和 简化配置。 |
| openTimeout | 一个 TimeSpan 值,该值指定为打开作完成提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。 |
| proxyAddress | 一个 URI,指定 HTTP 代理的地址。
useDefaultWebProxy如果是true,则此设置必须是 null。 默认值为 null。 |
| receiveTimeout | 一个 TimeSpan 值,该值指定为接收作完成提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。 |
| sendTimeout | 一个 TimeSpan 值,该值指定为要完成的发送作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。 |
| textEncoding | 设置用于在绑定上发出消息的字符集编码。 有效值包括: - BigEndianUnicode:Unicode BigEndian 编码。 - Unicode:16 位编码。 - UTF8:8 位编码 默认值为 UTF8。 此属性的类型 Encoding为 . |
| transactionFlow | 一个布尔值,该值指定绑定是否支持流动 WS-Transactions。 默认值为 false。 |
| useDefaultWebProxy | 一个布尔值,该值指示是否使用了系统自动配置的 HTTP 代理。 如果此属性为 null,则代理地址必须为 true (即未设置)。 默认值为 true。 |
子元素
| 元素 | Description |
|---|---|
| <安全> | 定义绑定的安全设置。 此元素的类型 WSDualHttpSecurityElement为 . |
| <readerQuotas> | 定义由使用此绑定配置的终结点可以处理的 SOAP 消息复杂性的约束。 此元素的类型 XmlDictionaryReaderQuotasElement为 . |
| <ReliableSession> | 指定是否在通道终结点之间建立可靠会话。 |
父元素
| 元素 | Description |
|---|---|
| <绑定> | 此元素包含标准绑定和自定义绑定的集合。 |
注解
它 WSDualHttpBinding 提供与 Web 服务协议 WSHttpBinding相同的支持,但与双工协定一起使用。
WSDualHttpBinding 仅支持 SOAP 安全性,并且需要可靠的消息传送。 此绑定要求客户端具有为服务提供回调终结点的公共 URI。 此属性由 clientBaseAddress 该属性提供。 双重绑定向服务公开客户端的 IP 地址。 客户端应使用安全性来确保它仅连接到它信任的服务。
此绑定可用于通过一个或多个 SOAP 中介可靠地通信。
默认情况下,此绑定会生成一个运行时堆栈,其中包含可靠性 WS-ReliableMessaging、消息安全性和身份验证 WS-Security、消息传递的 HTTP 以及文本/XML 消息编码。
Example
<configuration>
<system.ServiceModel>
<bindings>
<wsDualHttpBinding>
<binding closeTimeout="00:00:10"
openTimeout="00:00:20"
receiveTimeout="00:00:30"
sendTimeout="00:00:40"
bypassProxyOnLocal="false"
clientBaseAddress="http://localhost:8001/client/"
transactionFlow="true"
hostNameComparisonMode="WeakWildcard"
maxReceivedMessageSize="1000"
messageEncoding="Mtom"
proxyAddress="http://foo/bar"
textEncoding="utf-16"
useDefaultWebProxy="false">
<reliableSession ordered="false"
inactivityTimeout="00:02:00" />
<security mode="None">
<message clientCredentialType="None"
negotiateServiceCredential="false"
algorithmSuite="Aes128" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
</system.ServiceModel>
</configuration>