定义一个适合于非双工服务约定的安全、可靠且可互操作的绑定。该绑定为保证可靠性实现 WS-ReliableMessaging 规范,为保证消息安全性和进行身份验证实现 WS-Security 规范。传输协议是 HTTP,消息编码方式是 Text/XML 编码。
<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 maxDepth="integer" maxStringContentLength="integer" maxByteArrayContentLength="integer" maxBytesPerRead="integer" maxNameTableCharCount="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
定义用于对消息进行编码的编码器。包括以下有效值:
此属性的类型为 WSMessageEncoding。
name
一个包含绑定的配置名称的字符串。因为此值用作绑定的标识,所以它应该是唯一的。
openTimeout
一个 TimeSpan 值,指定为完成打开操作提供的时间间隔。此值应大于或等于 Zero。默认值为 00:01:00。
proxyAddress
一个指定 HTTP 代理地址的 URI。如果 useSystemWebProxy 为 true,则此设置必须为 空。默认值为 空。
receiveTimeout
一个 TimeSpan 值,指定为完成接收操作提供的时间间隔。此值应大于或等于 Zero。默认值为 00:01:00。
sendTimeout
一个 TimeSpan 值,指定为完成发送操作提供的时间间隔。此值应大于或等于 Zero。默认值为 00:01:00。
textEncoding
指定要用来在绑定上发出消息的字符集编码。包括以下有效值:
默认值为 Utf8TextEncoding。
此属性的类型为 Encoding。
transactionFlow
一个布尔值,指定绑定是否支持流动 WS-Transactions。默认值为 false。
useDefaultWebProxy
一个布尔值,指定是否使用系统的自动配置 HTTP 代理。默认值为 true。
<wsHttpBinding> 的 <security>
定义绑定的安全设置。此元素的类型为 WSHttpSecurityElement。
<readerQuotas>
定义可由采用此绑定配置的终结点进行处理的 SOAP 消息的复杂性约束。此元素的类型为 XmlDictionaryReaderQuotasElement。
<reliableSession> 元素
指定是否在通道终结点之间建立可靠会话。
<bindings>
此元素包含标准绑定和自定义绑定的集合。每一项均由其 name 进行标识。服务通过用 name 与绑定进行链接来使用绑定。
WSHttpBinding 与 BasicHttpBinding 相似,但是会提供更多的 Web 服务功能。与 BasicHttpBinding 一样,它也使用 HTTP 传输并提供消息安全,但它还提供事务、可靠消息传递和 WS-Addressing,这些功能要么在默认情况下已启用,要么通过单一控制设置来提供。
<configuration> <system.ServiceModel> <bindings> <wsHttpBinding> <binding name="test" closeTimeout="00:00:10" openTimeout="00:00:20" receiveTimeout="00:00:30" sendTimeout="00:00:40" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="WeakWildcard" maxMessageSize="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>