<customBinding>

Обеспечивает пользователю полный контроль над стеком обмена сообщениями.Provides full control over the messaging stack for the user.

<configuration>
  <system.serviceModel>
    <bindings>
      <customBinding>

СинтаксисSyntax

<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>
    <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="SymmetricKey/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>

Атрибуты и элементыAttributes and Elements

В следующих разделах описываются атрибуты, дочерние и родительские элементы.The following sections describe attributes, child elements, and parent elements

АтрибутыAttributes

АтрибутAttribute ОписаниеDescription
closeTimeoutcloseTimeout Значение TimeSpan, которое задает длительность времени ожидания для завершения операции закрытия.A TimeSpan value that specifies the interval of time provided for a close operation to complete. Это значение должно быть больше или равно Zero.This value should be greater than or equal to Zero. Значение по умолчанию - 00:01:00.The default is 00:01:00.
namename Строка, содержащая имя конфигурации привязки.A string that contains the configuration name of the binding. Это значение является определяемой пользователем строкой, которая используется как строка идентификации для пользовательской привязки.This value is a user-defined string that acts as the identification string for the custom binding. Начиная с платформа .NET Framework 4, привязки и поведения не обязательно должны иметь имя.Starting with .NET Framework 4, bindings and behaviors are not required to have a name. Дополнительные сведения о конфигурации по умолчанию и привязках и поведении, которые не имеют имен, см. в разделе упрощенная конфигурация и упрощенная конфигурация для служб WCF.For more information about default configuration and nameless bindings and behaviors, see Simplified Configuration and Simplified Configuration for WCF Services.
openTimeoutopenTimeout Значение TimeSpan, которое задает длительность времени ожидания для завершения операции открытия.A TimeSpan value that specifies the interval of time provided for an open operation to complete. Это значение должно быть больше или равно Zero.This value should be greater than or equal to Zero. Значение по умолчанию - 00:01:00.The default is 00:01:00.
receiveTimeoutreceiveTimeout Значение TimeSpan, которое задает длительность времени ожидания для завершения операции получения.A TimeSpan value that specifies the interval of time provided for a receive operation to complete. Это значение должно быть больше или равно Zero.This value should be greater than or equal to Zero. Значение по умолчанию - 00:01:00.The default is 00:01:00.
sendTimeoutsendTimeout Значение TimeSpan, которое задает длительность времени ожидания для завершения операции отправки.A TimeSpan value that specifies the interval of time provided for a send operation to complete. Это значение должно быть больше или равно Zero.This value should be greater than or equal to Zero. Значение по умолчанию - 00:01:00.The default is 00:01:00.

Дочерние элементыChild Elements

ЭлементElement ОписаниеDescription
<compositeDuplex> Определяет двусторонний обмен сообщениями в пользовательской привязке.Specifies two-way messaging to the custom binding. Используется транспортными протоколами, которые не имеют встроенной поддержки дуплексной связи, например HTTP.It is used with transports that do not allow duplex communications natively, for example, HTTP. Напротив, протокол TCP имеет встроенную поддержку дуплексной связи, и для него не требуется использовать этот элемент привязки для службы при отправке сообщений обратно клиенту.TCP, by contrast, allows duplex communications natively, and does not require the use of this binding element for the service to send messages back to a client.

Для осуществления контакта и установления подключения клиент должен предоставить службе адрес.The client must expose an address for the service to make contact and establish a connection. Этот адрес клиента предоставляется атрибутом ClientBaseAddress.This client address is provided by the ClientBaseAddress attribute.

Это элемент типа CompositeDuplexElement.This element is of type CompositeDuplexElement.
<pnrpPeerResolver> Определяет распознавателя имен узлов в протоколе однорангового разрешения имен (PNRP).Specifies a Peer Name Resolution Protocol (PNRP) peer name resolver. Это элемент типа PnrpPeerResolverElement.This element is of type PnrpPeerResolverElement.
<reliableSession> Определяет параметры WS-Reliable Messaging.Specifies the setting for WS-Reliable Messaging. Когда этот элемент добавляется к пользовательской привязке, получаемый канал может поддерживать гарантии доставки только один раз.When this element is added to a custom binding, the resulting channel can support exactly-once delivery assurances. Это элемент типа ReliableSessionElement.This element is of type ReliableSessionElement.
<security> Определяет параметры безопасности пользовательской привязки.Specifies the options for security of the custom binding. Это элемент типа SecurityElement.This element is of type SecurityElement.
<sslStreamSecurity> Определяет параметры безопасности привязки потока SSL.Specifies the security settings for a SSL stream binding. Это элемент типа SslStreamSecurityElement.This element is of type SslStreamSecurityElement.
<transactionFlow> Указывает, что привязка поддерживает поток транзакций, и задает используемый протокол в атрибуте transactionProtocol.Specifies that the binding supports transaction flow, and the protocol to be used by the transactionProtocol attribute. Это элемент типа TransactionFlowElement.This element is of type TransactionFlowElement.
<windowsStreamSecurity> Определяет параметры для потоковой безопасности пользовательской привязки.Specifies the options for streaming security of the custom binding. Это элемент типа WindowsStreamSecurityElement.This element is of type WindowsStreamSecurityElement.

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

ЭлементElement ОписаниеDescription
привязкиbindings Содержит все привязки для приложений Windows Communication Foundation.Contains all bindings for Windows Communication Foundation applications.

RemarksRemarks

Пользовательские привязки предоставляют полный контроль над стеком обмена сообщениями WCF.Custom bindings provide full control over the WCF messaging stack. Путем добавления элементов конфигурации к определенным сущностям можно создавать специально настроенные привязки.Special tailored bindings can be created my adding the configuration elements for specific entities. Например, чтобы создать надежную и безопасную привязку на основе протокола HTTPS, пользователь может объединить разделы httpsTransport, reliableSession и security.For example, the user can combine the httpsTransport section, reliableSession section and the security section to create a reliable and secure https based binding.

Отдельная привязка определяет стек обмена сообщениями, задавая элементы конфигурации для элементов стека в том порядке, в котором они присутствуют в стеке.An individual binding defines the message stack by specifying the configuration elements for the stack elements in the order they appear on the stack. Каждый элемент определяет и задает параметры одного элемента стека.Each element defines and configures the one element of the stack. В каждой пользовательской привязке должен быть один и только один транспортный элемент.There must be one and only one transport element in each custom binding. Без этого элемента стек обмена сообщениями является неполным.Without this element, the messaging stack is incomplete.

Важен порядок, в котором элементы присутствуют в стеке, поскольку именно в этом порядке к сообщению применяются операции.The order in which elements appear in the stack matters, because it is the order in which operations are applied to the message. Рекомендуется следующий порядок элементов стека:The recommended order of stack elements is the following:

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

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

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

  4. ТранспортTransport

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

Используйте пользовательские привязки в случае, когда ни одна из системных привязок не соответствует требованиям службы.Use a custom binding when one of the system-provided bindings does not meet the requirements of your service. Так, с помощью пользовательской привязки можно разрешить использование нового транспорта или нового кодировщика в конечной точке службы.A custom binding could be used, for example, to enable the use of a new transport or a new encoder at a service endpoint.

Пользовательская привязка создается с использованием одного из CustomBinding из коллекции элементов привязки, которые располагаются в определенном порядке.A custom binding is constructed using one of the CustomBinding from a collection of binding elements that are "stacked" in a specific order:

  • Вверху расположен необязательный элемент TransactionFlowBindingElement, который разрешает поток транзакций.At the top is an optional TransactionFlowBindingElement that allows flowing transactions.

  • Далее следует необязательный элемент ReliableSessionBindingElement, который предоставляет сеанс и механизм сортировки в соответствии со спецификацией WS-ReliableMessaging.Next is an optional ReliableSessionBindingElement that provides a session and ordering mechanism as defined in the WS-ReliableMessaging specification. Это понятие сеанса может выходить за пределы посредников SOAP и транспорта.This notion of a session can cross SOAP and transport intermediaries.

  • Далее следует необязательный элемент привязки безопасности, который предоставляет функции безопасности, например авторизацию, проверку подлинности, защиту и конфиденциальность.Next is an optional security binding element that provides security features like authorization, authentication, protection, and confidentiality. Windows Communication Foundation (WCF) предоставляет следующие элементы привязки безопасности:The following security binding elements are provided by Windows Communication Foundation (WCF):

  • Далее следуют необязательные шаблоны сообщений, задаваемые элементами привязки.Next are the optional message-patterns specified by binding elements:

  • CompositeDuplexBindingElement

  • Затем — необязательные элементы привязки обновлений/поддержки транспорта.Next are the optional transport upgrades/helpers binding elements:

  • Далее следует обязательный элемент привязки для кодирования сообщений.Next is a required message encoding binding element. Можно использовать собственный транспорт или одну из следующих привязок кодирования сообщений.You can use your own transport or use one of the following message encoding bindings:

  • Внизу расположен обязательный элемент транспорта.At the bottom is a required transport element. Можно использовать собственный транспорт или один из элементов привязки транспорта, предоставляемых Windows Communication Foundation (WCF):You can use your own transport or use one of transport binding elements provided by Windows Communication Foundation (WCF):

В следующей таблице приведены сводные данные по параметрам каждого уровня.The following table summarizes the options for each layer.

УровеньLayer ПараметрыOptions ОбязательноRequired
Поток транзакцийTransaction Flow TransactionFlowBindingElement НетNo
НадежностьReliability ReliableSessionBindingElement НетNo
БезопасностьSecurity Симметричный, асимметричный, транспортного уровняSymmetric, Asymmetric, Transport-Level НетNo
Изменение формыShape Change CompositeDuplexBindingElement НетNo
Обновления транспортаTransport Upgrades Поток SSL, поток Windows, распознаватель одноранговых узловSSL stream, Windows stream, Peer Resolver НетNo
КодированиеEncoding Текстовая, двоичная, MTOM, пользовательскаяText, Binary, MTOM, Custom ДаYes
ТранспортTransport TCP, именованные каналы, HTTP, HTTPS, разновидности MSMQ, пользовательскийTCP, Named Pipes, HTTP, HTTPS, flavors of MSMQ, Custom ДаYes

Кроме того, можно определить собственные элементы привязки и вставить их между любыми из приведенных выше заданных уровней.In addition, you can define your own binding elements and insert them between any of the preceding defined layers.

Обсуждение того, как использовать пользовательскую привязку для изменения привязок, предоставляемых системой, см. в разделе как настроить привязку System-Provided.For a discussion on how to use a custom binding to modify a system-provided binding, see How to: Customize a System-Provided Binding.

См. такжеSee also