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


<customBinding>

Предоставляет полный контроль над стеком обмена сообщениями для пользователя.

<configuration>
  <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>
    <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

Свойство Description
closeTimeout TimeSpan Значение, указывающее интервал времени, предоставленный для завершения операции закрытия. Это значение должно быть больше или равно Zero. Значение по умолчанию — 00:01:00.
имя Строка, содержащая имя конфигурации привязки. Это значение является определяемой пользователем строкой, которая выступает в качестве строки идентификации для пользовательской привязки. Начиная с .NET Framework 4 привязки и поведение не требуются для имени. Дополнительные сведения о конфигурации по умолчанию и безымяных привязках и поведении см. в статье "Упрощенная конфигурация " и "Упрощенная конфигурация" для служб WCF.
openTimeout TimeSpan Значение, указывающее интервал времени, предоставленного для завершения операции открытия. Это значение должно быть больше или равно Zero. Значение по умолчанию — 00:01:00.
receiveTimeout TimeSpan Значение, указывающее интервал времени, предоставленного для завершения операции получения. Это значение должно быть больше или равно Zero. Значение по умолчанию — 00:01:00.
sendTimeout TimeSpan Значение, указывающее интервал времени, предоставленного для завершения операции отправки. Это значение должно быть больше или равно Zero. Значение по умолчанию — 00:01:00.

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

Элемент Description
<составнойduplex> Задает двустороннее обмен сообщениями в настраиваемую привязку. Он используется с транспортами, которые не разрешают дуплексное взаимодействие в собственном коде, например HTTP. TCP, напротив, разрешает дуплексное взаимодействие в собственном коде и не требует использования этого элемента привязки для службы для отправки сообщений клиенту.

Клиент должен предоставить адрес для службы, чтобы связаться и установить подключение. Этот адрес клиента предоставляется атрибутом ClientBaseAddress .

Этот элемент имеет тип CompositeDuplexElement.
<pnrpPeerResolver> Указывает сопоставитель имен однорангового узла (PNRP). Этот элемент имеет тип PnrpPeerResolverElement.
<reliableSession> Задает параметр для обмена сообщениями WS-Reliable. При добавлении этого элемента в пользовательскую привязку результирующий канал может поддерживать точно один раз гарантии доставки. Этот элемент имеет тип ReliableSessionElement.
<безопасность> Задает параметры безопасности пользовательской привязки. Этот элемент имеет тип SecurityElement.
<sslStreamSecurity> Задает параметры безопасности для привязки SSL-потока. Этот элемент имеет тип SslStreamSecurityElement.
<transactionFlow> Указывает, что привязка поддерживает поток транзакций и протокол, используемый атрибутом transactionProtocol . Этот элемент имеет тип TransactionFlowElement.
<windowsStreamSecurity> Задает параметры для обеспечения безопасности потоковой передачи пользовательской привязки. Этот элемент имеет тип WindowsStreamSecurityElement.

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

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

Замечания

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

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

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

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

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

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

  4. Transport

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

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

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

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

Уровень Options Обязательно
Поток транзакций TransactionFlowBindingElement нет
Reliability ReliableSessionBindingElement нет
Безопасность Симметричная, асимметричная, Transport-Level нет
Изменение фигуры CompositeDuplexBindingElement нет
Обновления транспорта SSL-поток, поток Windows, одноранговый сопоставитель нет
Кодировка Текст, бинарный, MTOM, пользовательский Да
Transport TCP, именованные каналы, HTTP, HTTPS, вкусы MSMQ, Custom Да

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

Сведения о том, как использовать пользовательскую привязку для изменения предоставленной системой привязки, см. в статье "Практическое руководство. Настройка привязки System-Provided".

См. также