Поделиться через


<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

Строка, содержащая имя конфигурации привязки. Это значение является определяемой пользователем строкой, которая используется как строка идентификации для пользовательской привязки. Начиная с версии .NET Framework 4 для привязок и поведений необязательно задавать имена. Дополнительные сведения о конфигурации по умолчанию и о безымянных привязках и поведениях см. в разделах Simplified Configuration и Simplified Configuration for WCF Services.

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-Reliable Messaging. Когда этот элемент добавляется к пользовательской привязке, получаемый канал может поддерживать гарантии доставки только один раз. Это элемент типа ReliableSessionElement.

<security> для <customBinding>

Определяет параметры безопасности пользовательской привязки. Это элемент типа SecurityElement.

<sslStreamSecurity>

Определяет параметры безопасности привязки потока SSL. Это элемент типа SslStreamSecurityElement.

<transactionFlow>

Указывает, что привязка поддерживает поток транзакций, и задает используемый протокол в атрибуте transactionProtocol. Это элемент типа TransactionFlowElement.

<windowsStreamSecurity>

Определяет параметры для потоковой безопасности пользовательской привязки. Это элемент типа WindowsStreamSecurityElement.

Родительские элементы

Элемент Описание

bindings

Содержит все привязки для приложений Windows Communication Foundation.

Замечания

Пользовательские привязки предоставляют полный контроль над стеком обмена сообщениями WCF. Путем добавления элементов конфигурации к определенным сущностям можно создавать специально настроенные привязки. Например, чтобы создать надежную и безопасную привязку на основе протокола HTTPS, пользователь может объединить разделы httpsTransport, reliableSession и security.

Отдельная привязка определяет стек обмена сообщениями, задавая элементы конфигурации для элементов стека в том порядке, в котором они присутствуют в стеке. Каждый элемент определяет и задает параметры одного элемента стека. В каждой пользовательской привязке должен быть один и только один транспортный элемент. Без этого элемента стек обмена сообщениями является неполным.

Важен порядок, в котором элементы присутствуют в стеке, поскольку именно в этом порядке к сообщению применяются операции. Рекомендуется следующий порядок элементов стека:

  1. Транзакции (необязательный)

  2. Надежный обмен сообщениями (необязательный)

  3. Безопасность (необязательный)

  4. Транспорт

  5. Кодировщик (необязательный)

Используйте пользовательские привязки в случае, когда ни одна из системных привязок не соответствует требованиям службы. Так, с помощью пользовательской привязки можно разрешить использование нового транспорта или нового кодировщика в конечной точке службы.

Пользовательская привязка создается с использованием одного из CustomBinding из коллекции элементов привязки, которые располагаются в определенном порядке.

В следующей таблице приведены сводные данные по параметрам каждого уровня.

Уровень Параметры Обязательный

Поток транзакций

TransactionFlowBindingElement

Нет

Надежность

ReliableSessionBindingElement

Нет

Безопасность

Симметричный, асимметричный, транспортного уровня

Нет

Изменение формы

CompositeDuplexBindingElement

Нет

Обновления транспорта

Поток SSL, поток Windows, распознаватель одноранговых узлов

Нет

Кодировка

Текстовая, двоичная, 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