<vlastní vazby>

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

<Konfigurace>
  <System.servicemodel>
    <Vazby>
      <vlastní vazby>

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>

Atributy a elementy

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

Atributy

Atribut Popis
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.
name Ř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 bezpomenný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í operace otevření. 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 zadaný pro 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 zadaný pro 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é elementy

Element Popis
<compositeDuplex> Určuje obousměrné zasílání zpráv do vlastní vazby. Používá se s přenosy, které neumožňují duplexní komunikaci nativně, například HTTP. PROTOKOL TCP naproti tomu umožňuje duplexní komunikaci nativně a nevyžaduje použití tohoto elementu vazby pro službu k odesílání zpráv zpět klientovi.

Klient musí zveřejnit adresu služby, aby kontaktovala a navázala připojení. Tuto adresu klienta poskytuje atribut .ClientBaseAddress

Tento prvek je typu CompositeDuplexElement.
<pnrpPeerResolver> Určuje překladač názvů partnerských uzlů PNRP (Peer Name Resolution Protocol). Tento prvek je typu PnrpPeerResolverElement.
<reliableSession> Určuje nastavení pro zasílání zpráv WS-Reliable. Po přidání tohoto prvku do vlastní vazby může výsledný kanál podporovat záruky doručení přesně jednou. Tento prvek je typu ReliableSessionElement.
<Zabezpečení> 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ý transactionProtocol má atribut použít. Tento prvek je typu TransactionFlowElement.
<windowsStreamSecurity> Určuje možnosti zabezpečení streamování vlastní vazby. Tento prvek je typu WindowsStreamSecurityElement.

Nadřazené elementy

Element Popis
vazby 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. Je možné vytvořit speciální přizpůsobené vazby přidáním elementů konfigurace pro konkrétní entity. Uživatel může například zkombinovat httpsTransport oddíl, reliableSession oddíl a oddíl a vytvořit tak spolehlivou a zabezpečenou vazbu založenou security na protokolu HTTPS.

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

Pořadí, ve kterém se prvky zobrazují v zásobníku, je důležité, protože se jedná o pořadí, ve kterém se u zprávy použijí operace. 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. Přenos

  5. Kodér (volitelné)

Vlastní vazbu použijte, pokud některá ze systémem poskytovaný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 se vytváří pomocí jednoho z elementů CustomBinding z kolekce elementů vazby, které jsou "skládané" v určitém pořadí:

Následující tabulka shrnuje možnosti pro jednotlivé vrstvy.

Vrstva Možnosti Vyžadováno
Tok transakcí TransactionFlowBindingElement Ne
Spolehlivost ReliableSessionBindingElement Ne
Zabezpečení Symetrické, asymetrické, Transport-Level Ne
Změna obrazce CompositeDuplexBindingElement Ne
Upgrady přenosu Stream SSL, windows stream, partnerský překladač Ne
Encoding Text, Binary, MTOM, Custom Ano
Přenos 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 tom, jak pomocí vlastní vazby upravit systémovou vazbu, najdete v tématu Postupy: Přizpůsobení vazby System-Provided.

Viz také