<wsHttpBinding>

定义一个适合于非双工服务约定的安全、可靠且可互操作的绑定。该绑定为保证可靠性实现 WS-ReliableMessaging 规范,为保证消息安全性和进行身份验证实现 WS-Security 规范。传输协议是 HTTP,消息编码方式是 Text/XML 编码。

架构层次结构

<system.serviceModel>
  <bindings>
    <wsHttpBinding>

语法

<wsHttpBinding>
    <binding 
        allowCookies="Boolean"
        bypassProxyOnLocal="Boolean"
        closeTimeout="TimeSpan"
        hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
        maxBufferPoolSize="integer"
        maxReceivedMessageSize="Integer"
        messageEncoding="Text/Mtom" 
                name="string"
        openTimeout="TimeSpan" 
        proxyAddress="URI"
        receiveTimeout="TimeSpan"
        sendTimeout="TimeSpan"
                textEncoding="UnicodeFffeTextEncoding/Utf16TextEncoding/Utf8TextEncoding"
        transactionFlow="Boolean"
        useDefaultWebProxy="Boolean">
        <reliableSession ordered="Boolean"
           inactivityTimeout="TimeSpan"
           enabled="Boolean" />
        <security mode="Message/None/Transport/TransportWithCredential">
           <transport clientCredentialType="Basic/Certificate/Digest/None/Ntlm/Windows"
                proxyCredentialType="Basic/Digest/None/Ntlm/Windows"
                realm="string" />
          <message 
             algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
                          clientCredentialType="Certificate/IssuedToken/None/UserName/Windows"
             establishSecurityContext="Boolean"
             negotiateServiceCredential="Boolean" />
        </security>
       <readerQuotas             maxArrayLength="Integer"            maxBytesPerRead="Integer"            maxDepth="Integer"             maxNameTableCharCount="Integer"                     maxStringContentLength="Integer" />
    </binding>
</wsHttpBinding>

属性和元素

以下几节描述了特性、子元素和父元素

属性

特性 说明

allowCookies

一个布尔值,指示客户端是否接受 Cookie 并在今后的请求中传播这些 Cookie。默认值为 false。

在与使用 Cookie 的 ASMX Web 服务进行交互时,可以使用此属性。通过这种方式,可以确保从服务器返回的 Cookie 自动复制到客户端今后对该服务的所有请求。

bypassProxyOnLocal

一个布尔值,指示是否对本地地址不使用代理服务器。默认值为 false

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

定义用于对消息进行编码的编码器。包括以下有效值:

  • Text:使用文本消息编码器。

  • Mtom:使用消息传输组织机制 1.0 (MTOM) 编码器。

  • 默认值为 Text。

此属性的类型为 WSMessageEncoding

name

一个包含绑定的配置名称的字符串。因为此值用作绑定的标识,所以它应该是唯一的。从 .NET Framework 4 开始,不要求绑定和行为具有名称。有关默认配置以及无名称绑定和行为的更多信息,请参见Simplified ConfigurationSimplified Configuration for WCF Services

openTimeout

一个 TimeSpan 值,指定为完成打开操作提供的时间间隔。此值应大于或等于 Zero。默认值为 00:01:00。

proxyAddress

一个指定 HTTP 代理地址的 URI。如果 useSystemWebProxytrue,则此设置必须为 null。默认值为 null

receiveTimeout

一个 TimeSpan 值,指定为完成接收操作提供的时间间隔。此值应大于或等于 Zero。默认值为 00:01:00。

sendTimeout

一个 TimeSpan 值,指定为完成发送操作提供的时间间隔。此值应大于或等于 Zero。默认值为 00:01:00。

textEncoding

指定要用来在绑定上发出消息的字符集编码。包括以下有效值:

  • UnicodeFffeTextEncoding:Unicode BigEndian 编码。

  • Utf16TextEncoding:16 位编码。

  • Utf8TextEncoding:8 位编码。

默认值为 Utf8TextEncoding。

此属性的类型为 Encoding

transactionFlow

一个布尔值,指定绑定是否支持流动 WS-Transactions。默认值为 false

useDefaultWebProxy

一个布尔值,指定是否使用系统的自动配置 HTTP 代理。默认值为 true

子元素

元素 说明

<wsHttpBinding> 的 <security>

定义绑定的安全设置。此元素的类型为 WSHttpSecurityElement

<readerQuotas>

定义可由采用此绑定配置的终结点进行处理的 SOAP 消息的复杂性约束。此元素的类型为 XmlDictionaryReaderQuotasElement

reliableSession

指定是否在通道终结点之间建立可靠会话。

父元素

元素 说明

<bindings>

此元素包含标准绑定和自定义绑定的集合。

备注

WSHttpBindingBasicHttpBinding 相似,但是会提供更多的 Web 服务功能。与 BasicHttpBinding 一样,它也使用 HTTP 传输并提供消息安全,但它还提供事务、可靠消息传递和 WS-Addressing,这些功能要么在默认情况下已启用,要么通过单一控制设置来提供。

示例

<configuration>
    <system.ServiceModel>
        <bindings>
            <wsHttpBinding>
                <binding 
                    closeTimeout="00:00:10"
                    openTimeout="00:00:20" 
                    receiveTimeout="00:00:30"
                    sendTimeout="00:00:40"
                    bypassProxyOnLocal="false"
                    transactionFlow="false" 
                    hostNameComparisonMode="WeakWildcard"
                    maxReceivedMessageSize="1000"
                    messageEncoding="Mtom" 
                    proxyAddress="http://foo/bar"
                    textEncoding="utf-16"
                    useDefaultWebProxy="false">
                    <reliableSession ordered="false"
                         inactivityTimeout="00:02:00"
                         enabled="true" />
                    <security mode="Transport">
                         <transport clientCredentialType="Digest"
                            proxyCredentialType="None"
                            realm="someRealm" />
                         <message clientCredentialType="Windows"
                            negotiateServiceCredential="false"
                            algorithmSuite="Aes128" 
                            defaultProtectionLevel="None" />
                    </security>
                </binding>
           </wsHttpBinding>
        </bindings>
    </system.ServiceModel>
</configuration>

另请参见

参考

WSHttpBinding
WSHttpBindingElement

概念

<binding>

其他资源

Windows Communication Foundation Bindings
Configuring System-Provided Bindings
Using Bindings to Configure Services and Clients