<customBinding>

Poskytuje úplnou kontrolu nad zásobníkem zasílání zpráv pro uživatele.

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

Syntaxe

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

Atributy a prvky

Následující části popisují atributy, podřízené prvky a nadřazené prvky.

Attributes

Vlastnost Description
closeTimeout Hodnota TimeSpan , která určuje časový interval zadaný pro dokončení operace uzavření. Tato hodnota by měla být větší nebo rovna Zero. Výchozí hodnota je 00:01:00.
název Řetězec, který obsahuje název konfigurace vazby. Tato hodnota je uživatelem definovaný řetězec, který funguje jako identifikační řetězec pro vlastní vazbu. Počínaje rozhraním .NET Framework 4 není nutné, aby vazby a chování měly název. Další informace o výchozí konfiguraci a beznázvových vazbách a chování najdete v tématu Zjednodušená konfigurace a zjednodušená konfigurace pro služby WCF.
openTimeout Hodnota TimeSpan , která určuje časový interval zadaný pro dokončení otevřené operace. Tato hodnota by měla být větší nebo rovna Zero. Výchozí hodnota je 00:01:00.
receiveTimeout Hodnota TimeSpan , která určuje časový interval určený k dokončení operace příjmu. Tato hodnota by měla být větší nebo rovna Zero. Výchozí hodnota je 00:01:00.
sendTimeout Hodnota TimeSpan , která určuje časový interval určený k dokončení operace odeslání. Tato hodnota by měla být větší nebo rovna Zero. Výchozí hodnota je 00:01:00.

Podřízené prvky

prvek Description
<compositeDuplex> Určuje obousměrné zasílání zpráv do vlastní vazby. Používá se s přenosy, které nativně neumožňují duplexní komunikaci, například HTTP. Naproti tomu protokol TCP umožňuje nativně duplexní komunikaci a nevyžaduje použití tohoto elementu vazby, aby služba odeslala zprávy zpět klientovi.

Klient musí zveřejnit adresu, aby služba kontaktovala a navazovala připojení. Tato adresa klienta je poskytována atributem ClientBaseAddress .

Tento prvek je typu CompositeDuplexElement.
<pnrpPeerResolver> Určuje překladač názvů partnerských uzlů PROTOKOLU PNRP (Peer Name Resolution Protocol). Tento prvek je typu PnrpPeerResolverElement.
<Reliablesession> Určuje nastavení pro zasílání zpráv WS-Reliable. Když se tento prvek přidá do vlastní vazby, výsledný kanál může podporovat přesně jednou záruky doručení. Tento prvek je typu ReliableSessionElement.
<bezpečnost> Určuje možnosti zabezpečení vlastní vazby. Tento prvek je typu SecurityElement.
<sslStreamSecurity> Určuje nastavení zabezpečení pro vazbu streamu SSL. Tento prvek je typu SslStreamSecurityElement.
<Transactionflow> Určuje, že vazba podporuje tok transakce a protokol, který má být použit atributem transactionProtocol . Tento prvek je typu TransactionFlowElement.
<windowsStreamSecurity> Určuje možnosti pro zabezpečení streamování vlastní vazby. Tento prvek je typu WindowsStreamSecurityElement.

Nadřazené prvky

prvek Description
bindings Obsahuje všechny vazby pro aplikace Windows Communication Foundation.

Poznámky

Vlastní vazby poskytují úplnou kontrolu nad zásobníkem zasílání zpráv WCF. Speciální přizpůsobené vazby lze vytvořit přidáním konfiguračních prvků pro konkrétní entity. Uživatel může například zkombinovat httpsTransport oddíl, reliableSession oddíl a oddíl a vytvořit spolehlivou a zabezpečenou vazbu založenou security na https.

Jednotlivá vazba definuje zásobník zpráv zadáním konfiguračních prvků pro elementy zásobníku v pořadí, v jakém se zobrazují v zásobníku. Každý prvek definuje a konfiguruje jeden prvek zásobníku. V každé vlastní vazbě musí být jeden a pouze jeden transportní prvek. Bez tohoto prvku je zásobník zasílání zpráv neúplný.

Pořadí, ve kterém se prvky v zásobníku zobrazují, záleží, protože se jedná o pořadí, ve kterém se operace na zprávu použijí. Doporučené pořadí elementů zásobníku je následující:

  1. Transakce (volitelné)

  2. Spolehlivé zasílání zpráv (volitelné)

  3. Zabezpečení (volitelné)

  4. Transport

  5. Kodér (volitelné)

Použijte vlastní vazbu, pokud jedna ze systémových vazeb nesplňuje požadavky vaší služby. Vlastní vazbu je možné použít například k povolení použití nového přenosu nebo nového kodéru v koncovém bodu služby.

Vlastní vazba je vytvořena pomocí jedné z CustomBinding kolekce vazeb prvků, které jsou "skládané" v určitém pořadí:

Následující tabulka shrnuje možnosti pro každou vrstvu.

Vrstva Možnosti Povinné
Tok transakcí TransactionFlowBindingElement Ne
Reliability ReliableSessionBindingElement Ne
Zabezpečení Symetrické, asymetrické, Transport-Level Ne
Změna obrazce CompositeDuplexBindingElement Ne
Upgrady přenosu Stream SSL, Stream Systému Windows, Překladač partnerských uzlů Ne
Encoding Text, Binární, MTOM, Vlastní Ano
Transport TCP, pojmenované kanály, HTTP, HTTPS, příchutě MSMQ, vlastní Ano

Kromě toho můžete definovat vlastní prvky vazby a vložit je mezi libovolnou z předchozích definovaných vrstev.

Diskuzi o použití vlastní vazby k úpravě systémové vazby naleznete v tématu Postupy: Přizpůsobení vazby System-Provided.

Viz také