<Custombinding>

Zapewnia pełną kontrolę nad stosem komunikatów dla użytkownika.

<Konfiguracji>
  <System.servicemodel>
    <Powiązania>
      <Custombinding>

Składnia

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

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne

Atrybuty

Atrybut Opis
closeTimeout TimeSpan Wartość określająca interwał czasu podany dla operacji zamknięcia do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
name Ciąg zawierający nazwę konfiguracji powiązania. Ta wartość jest ciągiem zdefiniowanym przez użytkownika, który działa jako ciąg identyfikacyjny powiązania niestandardowego. Począwszy od .NET Framework 4, powiązania i zachowania nie muszą mieć nazwy. Aby uzyskać więcej informacji na temat domyślnej konfiguracji i bez nazw powiązań i zachowań, zobacz Uproszczona konfiguracja i Uproszczona konfiguracja dla usług WCF.
openTimeout TimeSpan Wartość określająca interwał czasu podany dla operacji otwierania do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
Receivetimeout TimeSpan Wartość określająca interwał czasu podany dla operacji odbierania do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.
sendTimeout TimeSpan Wartość określająca interwał czasu podany dla operacji wysyłania do ukończenia. Ta wartość powinna być większa lub równa Zero. Wartość domyślna to 00:01:00.

Elementy podrzędne

Element Opis
<compositeDuplex> Określa dwukierunkową obsługę komunikatów w powiązaniu niestandardowym. Jest on używany z transportami, które nie zezwalają na komunikację dwukierunkową natywnie, na przykład HTTP. Natomiast protokół TCP umożliwia natywną komunikację dwukierunkową i nie wymaga użycia tego elementu powiązania dla usługi do wysyłania komunikatów z powrotem do klienta.

Klient musi uwidocznić adres usługi, aby nawiązać kontakt i nawiązać połączenie. Ten adres klienta jest dostarczany przez ClientBaseAddress atrybut .

Ten element jest typu CompositeDuplexElement.
<pnrpPeerResolver> Określa rozpoznawanie nazw równorzędnych (PNRP) równorzędnego rozpoznawania nazw. Ten element jest typu PnrpPeerResolverElement.
<reliableSession> Określa ustawienie dla WS-Reliable Messaging. Po dodaniu tego elementu do powiązania niestandardowego wynikowy kanał może obsługiwać dokładnie jednokrotne zapewnienia dostarczania. Ten element jest typu ReliableSessionElement.
<Zabezpieczeń> Określa opcje zabezpieczeń powiązania niestandardowego. Ten element jest typu SecurityElement.
<sslStreamSecurity> Określa ustawienia zabezpieczeń dla powiązania strumienia SSL. Ten element jest typu SslStreamSecurityElement.
<transactionFlow> Określa, że powiązanie obsługuje przepływ transakcji i protokół, który ma być używany przez transactionProtocol atrybut . Ten element jest typu TransactionFlowElement.
<windowsStreamSecurity> Określa opcje zabezpieczeń przesyłania strumieniowego powiązania niestandardowego. Ten element jest typu WindowsStreamSecurityElement.

Elementy nadrzędne

Element Opis
powiązania Zawiera wszystkie powiązania dla aplikacji Windows Communication Foundation.

Uwagi

Powiązania niestandardowe zapewniają pełną kontrolę nad stosem komunikatów WCF. Można utworzyć specjalne powiązania dostosowane, dodając elementy konfiguracji dla określonych jednostek. Na przykład użytkownik może połączyć sekcję, sekcję httpsTransport i security sekcję, reliableSession aby utworzyć niezawodne i bezpieczne powiązanie oparte na protokole HTTPS.

Pojedyncze powiązanie definiuje stos komunikatów, określając elementy konfiguracji dla elementów stosu w kolejności ich wyświetlania na stosie. Każdy element definiuje i konfiguruje jeden element stosu. W każdym powiązaniu niestandardowym musi istnieć jeden i tylko jeden element transportu. Bez tego elementu stos komunikatów jest niekompletny.

Kolejność wyświetlania elementów w stosie ma znaczenie, ponieważ jest to kolejność, w jakiej operacje są stosowane do komunikatu. Zalecana kolejność elementów stosu jest następująca:

  1. Transakcje (opcjonalne)

  2. Niezawodna obsługa komunikatów (opcjonalnie)

  3. Zabezpieczenia (opcjonalnie)

  4. Transport

  5. Koder (opcjonalnie)

Użyj powiązania niestandardowego, gdy jedno z powiązań dostarczonych przez system nie spełnia wymagań usługi. Można na przykład użyć powiązania niestandardowego, aby umożliwić korzystanie z nowego transportu lub nowego kodera w punkcie końcowym usługi.

Powiązanie niestandardowe jest tworzone przy użyciu jednej z CustomBinding kolekcji elementów powiązania, które są "ułożone" w określonej kolejności:

Poniższa tabela zawiera podsumowanie opcji dla każdej warstwy.

Warstwa Opcje Wymagane
Przepływ transakcji TransactionFlowBindingElement Nie
Niezawodność ReliableSessionBindingElement Nie
Zabezpieczenia Symetryczne, asymetryczne, Transport-Level Nie
Zmiana kształtu CompositeDuplexBindingElement Nie
Uaktualnienia transportu Strumień SSL, strumień systemu Windows, rozpoznawanie równorzędne Nie
Encoding Tekst, binarny, MTOM, niestandardowy Tak
Transport TCP, nazwane potoki, HTTP, HTTPS, smaki MSMQ, niestandardowe Tak

Ponadto można zdefiniować własne elementy powiązania i wstawić je między dowolną z poprzednich zdefiniowanych warstw.

Aby zapoznać się z omówieniem sposobu używania powiązania niestandardowego do modyfikowania powiązania dostarczonego przez system, zobacz How to: Customize a System-Provided Binding (Instrukcje: dostosowywanie powiązania System-Provided).

Zobacz też