<customBinding>

提供了对用户消息堆栈的完全控制。

<system.serviceModel>
  <bindings>
    <customBinding>

<customBinding>
    <binding name="string"
        closeTimeout="TimeSpan"
        openTimeout="TimeSpan" 
        receiveTimeout="TimeSpan"
        sendTimeout="TimeSpan"
       <compositeDuplex clientBaseAddress="Uri"/>
       <reliableSession acknowledgementInterval="TimeSpan"
           advancedFlowControl="Boolean" 
           bufferedMessagesQuota="Integer"
           inactivityTimeout="TimeSpan"
           maxPendingChannels="Integer"
           maxRetryCount="Integer" 
           ordered="Boolean" />
       <pnrpPeerResolver />
       <windowsStreamSecurity protectionLevel="None/Sign/EncryptAndSign"/>
       <sslStreamSecurity requireClientCertificate="Boolean" />
              <transactionFlow transactionProtocol="OleTransactions/WSAtomicTransactionOctober2004"/>
       <security 
          defaultAlgorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/ Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
           authenticationMode="UserNameForAnonymous"
           contextMode="Cookie" 
           defaultProtectionLevel="Sign"
           enableKeyDerivation="false"
           keyEntropyMode="ClientEntropy" 
                  messageProtectionOrder="SignBeforeEncryptAndEncryptSignature" 
           securityVersion="WSSecurityXXX2005">
           <localClientSettings cacheCookies="false"
               detectReplays="false"
               maxCookieCachingTime="00:07:24" />
           <localServiceSettings replayCacheSize="9"
               maxClockSkew="00:00:03" 
               replayWindow="00:07:22.2190000" />
       </security>
       <binaryMessageEncoding maxReadPoolSize="Integer"
           maxWritePoolSize="Integer"
           maxSessionSize="Integer" />
       <httpsTransport manualAddressing="Boolean"
           maxMessageSize="Integer"
           authenticationScheme="Negotiate" 
           bypassProxyOnLocal="Boolean"
           hostNameComparisonMode="Exact" 
           mapAddressingHeadersToHttpHeaders="Boolean" 
           proxyaddress="Uri"
           realm="String" 
           requireClientCertificate="Boolean" />
       <peerTransport manualAddressing="false"
          maxMessageSize="20002"
          listenIPAddress="202.10.1.9" 
          messageAuthentication="false"
          peerNodeAuthenticationMode="None"
          port="1000" />

<security 
      defaultAlgorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/ Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
   authenticationMode="UserNameForAnonymous"
   bootstrapBindingConfiguration="String"
   bootstrapBindingSectionName="String"
   defaultProtectionLevel="None/Sign/EncryptAndSign"
      requireDerivedKeys="Boolean"
   securityHeaderLayout="Strict/Lax/LaxTimestampFirst/LaxTimestampLast"
   includeTimestamp="Boolean"
   keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy" 
   messageProtectionOrder="SignBeforeEncrypt/SignBeforeEncryptAndEncryptSignature/EncryptBeforeSign" 
   protectTokens="Boolean"
   requireSecurityContextCancellation="Boolean"
   securityVersion=" WSSecurityJan2004/WSSecurityXXX2005"
   requireSignatureConfirmation="Boolean" >
   <localClientSettings cacheCookies="Boolean"
      detectReplays="Boolean"
      replayCacheSize="Integer"
      maxClockSkew="TimeSpan"
      maxCookieCachingTime="TimeSpan"
      replayWindow="TimeSpan"
      sessionKeyRenewalInterval="TimeSpan"
      sessionKeyRolloverInterval="TimeSpan"
      reconnectOnTransportFailure="Boolean"
      timestampValidityDuration="TimeSpan"
      cookieRenewalThresholdPercentage="Integer" />
   <localServiceSettings detectReplays="Boolean"
      issuedCookieLifeTime="TimeSpan"
      maxStatefulNegotiations="Integer"
            replayCacheSize="Integer"
      maxClockSkew="TimeSpan" 
      negotiationTimeout="TimeSpan"
      replayWindow="TimeSpan"
      inactivityTimeout="TimeSpan"
      sessionKeyRenewalInterval="TimeSpan"
      sessionKeyRolloverInterval="TimeSpan"
      reconnectOnTransportFailure="Boolean"
      maxConcurrentSessions="Integer"
      timestampValidityDuration="TimeSpan" />
   <federationParameters trustVersion="WSTrustApr2004/WSTrustFeb2005" />
<security 
   defaultAlgorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/ Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
   authenticationMode="UserNameForAnonymous"
   bootstrapBindingConfiguration="String"
   bootstrapBindingSectionName="String"
   defaultProtectionLevel="None/Sign/EncryptAndSign"
      requireDerivedKeys="Boolean"
   securityHeaderLayout="Strict/Lax/LaxTimestampFirst/LaxTimestampLast"
   includeTimestamp="Boolean"
   keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy" 
   messageProtectionOrder="SignBeforeEncrypt/SignBeforeEncryptAndEncryptSignature/EncryptBeforeSign" 
   protectTokens="Boolean"
   requireSecurityContextCancellation="Boolean"
   securityVersion=" WSSecurityJan2004/WSSecurityXXX2005"
   requireSignatureConfirmation="Boolean" >
   <localClientSettings cacheCookies="Boolean"
      detectReplays="Boolean"
      replayCacheSize="Integer"
      maxClockSkew="TimeSpan"
      maxCookieCachingTime="TimeSpan"
      replayWindow="TimeSpan"
      sessionKeyRenewalInterval="TimeSpan"
      sessionKeyRolloverInterval="TimeSpan"
      reconnectOnTransportFailure="Boolean"
      timestampValidityDuration="TimeSpan"
      cookieRenewalThresholdPercentage="Integer" />
   <localServiceSettings detectReplays="Boolean"
      issuedCookieLifeTime="TimeSpan"
      maxStatefulNegotiations="Integer"
            replayCacheSize="Integer"
      maxClockSkew="TimeSpan" 
      negotiationTimeout="TimeSpan"
      replayWindow="TimeSpan"
      inactivityTimeout="TimeSpan"
      sessionKeyRenewalInterval="TimeSpan"
      sessionKeyRolloverInterval="TimeSpan"
      reconnectOnTransportFailure="Boolean"
      maxConcurrentSessions="Integer"
      timestampValidityDuration="TimeSpan" />
   <federationParameters trustVersion="WSTrustApr2004/WSTrustFeb2005" />
   <GenericIssuedTokenParameters> 
      <LocalIssuerIssuedTokenParameters keyType=" SymmeticKey/PublicKey"
        keySize="Integer"
        tokenType="String" />
     <IssuedTokenParametersEndpointAddress address="URI"
        bindingConfiguration="String"
        binding="String" />
     <IssuedTokenClient localIssuerChannelBehaviors="String"
        cacheIssuedTokens="Boolean"
        maxIssuedTokenCachingTime="TimeSpan"
        keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy" />
     <IssuedTokenClientBehavior issuerAddress="String"
        behaviorConfiguration="String" />
     <IssuedTokenClientBehavior address="URI"
        bindingConfiguration="String"
        binding="String" />
   </GenericIssuedTokenParameters> 
</security>
</binding>
</customBinding>

属性和元素

属性

属性 说明

closeTimeout

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

name

一个包含绑定的配置名称的字符串。此值是用户定义的一个字符串,可充当自定义绑定的标识字符串。

openTimeout

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

receiveTimeout

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

sendTimeout

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

子元素

元素 说明

<compositeDuplex>

对自定义绑定指定双向消息处理。它与本身不允许进行双工通信的传输(例如,HTTP)一起使用。与此相反,TCP 本身允许进行双工通信,并且不要求服务在将消息发送回客户端时使用此绑定元素。

客户端必须公开一个地址,以便服务进行联系和建立连接。此客户端地址由 ClientBaseAddress 属性提供。

此元素的类型为 CompositeDuplexElement

<pnrpPeerResolver>

指定对等名称解析协议 (PNRP) 对等名称解析程序。此元素的类型为 PnrpPeerResolverElement

<reliableSession>

指定 WS-ReliableMessaging 的设置。如果将该元素添加到自定义绑定,则生成的通道可支持一次性传递保证。此元素的类型为 ReliableSessionElement

<customBinding> 的 <security>

指定自定义绑定的安全选项。此元素的类型为 SecurityElement

<sslStreamSecurity>

指定 SSL 流绑定的安全设置。此元素的类型为 SslStreamSecurityElement

<transactionFlow>

指定绑定支持事务流以及 transactionProtocol 属性将要使用的协议。此元素的类型为 TransactionFlowElement

<windowsStreamSecurity>

指定自定义绑定的流安全选项。此元素的类型为 WindowsStreamSecurityElement

父元素

元素 说明

bindings

包含 Windows Communication Foundation 应用程序的所有绑定。

备注

自定义绑定提供了对 WCF 消息堆栈的完全控制。通过添加特定实体的配置元素,可以创建特别定制的绑定。例如,用户可以合并 httpsTransport 节、reliableSession 节和 security 节以创建一个安全可靠的基于 https 的绑定。

单个绑定按照堆栈元素在堆栈中的出现顺序来指定其配置元素,从而定义消息堆栈。每个元素都定义和配置了该堆栈的一个元素。在每个自定义绑定中,必须有且只能有一个 transport 元素。如果没有该元素,消息堆栈将是不完整的。

元素在堆栈中出现的顺序非常重要,因为在将操作应用于消息时会采用该顺序。建议的堆栈元素顺序如下:

  1. 事务(可选)
  2. 可靠消息(可选)
  3. 安全性(可选)
  4. 传输
  5. 编码器(可选)

当系统提供的某个绑定不符合服务要求时,应使用自定义绑定。例如,自定义绑定可用于实现在服务终结点使用新的传输或新的编码器。

自定义绑定是使用以特定顺序“堆叠”的绑定元素集合中的某个 CustomBinding 构造的,顺序如下:

下表总结了每层的选项。

选项 必需

事务流

TransactionFlowBindingElement

可靠性

ReliableSessionBindingElement

安全性

对称、非对称、传输级

形状更改

CompositeDuplexBindingElement

传输升级

SSL 流、Windows 流、对等解析程序

Encoding

文本、二进制、MTOM、自定义

Transport

TCP、命名管道、HTTP、HTTPS、MSMQ 风格、自定义

此外,可以定义自己的绑定元素,并将它们插在前面定义的任何层之间。

有关如何使用自定义绑定修改系统提供的绑定的讨论,请参见How To: Customize a System-Provided Binding

1.

另请参见

参考

<customBinding>
Binding
BindingElement
BindingsSection
CustomBinding

概念

<binding>

其他资源

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