<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 Wartość TimeSpan określająca interwał czasu dla ukończenia operacji zamykania. Ta wartość powinna być większa niż 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 identyfikacji dla powiązania niestandardowego. Począwszy od .NET Framework 4, powiązania i zachowania nie muszą mieć nazwy. Aby uzyskać więcej informacji o domyślnej konfiguracji oraz powiązaniach i zachowaniach bez nazwy, zobacz Uproszczona konfiguracja i uproszczona konfiguracja dla usług WCF.
openTimeout Wartość TimeSpan określająca interwał czasu dla operacji otwierania do ukończenia. Ta wartość powinna być większa niż lub równa Zero. Wartość domyślna to 00:01:00.
Receivetimeout Wartość TimeSpan określająca interwał czasu, przez który operacja odbierania ma być ukończona. Ta wartość powinna być większa niż lub równa Zero. Wartość domyślna to 00:01:00.
sendTimeout Wartość TimeSpan określająca interwał czasu dla operacji wysyłania do ukończenia. Ta wartość powinna być większa niż lub równa Zero. Wartość domyślna to 00:01:00.

Elementy podrzędne

Element Opis
compositeDuplex> Określa dwukierunkową komunikaty do powiązania niestandardowego. Jest on używany z transportami, które nie zezwalają na komunikację dwukierunkową natywnie, na przykład HTTP. Z kolei protokół TCP umożliwia komunikację dwukierunkową natywnie i nie wymaga użycia tego elementu powiązania, aby usługa wysyłała komunikaty z powrotem do klienta.

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

Ten element jest typu CompositeDuplexElement.
pnrpPeerResolver> Określa równorzędny protokół rozpoznawania nazw (PNRP) równorzędnego rozpoznawania nazw. Ten element jest typu PnrpPeerResolverElement.
reliableSession> Określa ustawienie dla usługi WS-Reliable Messaging. Po dodaniu tego elementu do powiązania niestandardowego wynikowy kanał może obsługiwać dokładnie jeden raz gwarancje dostarczenia. 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 Windows Communication Foundation.

Uwagi

Powiązania niestandardowe zapewniają pełną kontrolę nad stosem komunikatów WCF. Można utworzyć specjalne dostosowane powiązania, dodając elementy konfiguracji dla określonych jednostek. Na przykład użytkownik może połączyć sekcję httpsTransport , reliableSessionsecurity sekcję i sekcję w celu utworzenia niezawodnego i bezpiecznego powiązania opartego na protokole HTTPS.

Pojedyncze powiązanie definiuje stos komunikatów, określając elementy konfiguracji elementów stosu w kolejności, w których są one wyświetlane na stosie. Każdy element definiuje i konfiguruje jeden element stosu. W każdym powiązaniu niestandardowym musi znajdować się tylko jeden element transportu. Bez tego elementu stos komunikatów jest niekompletny.

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

  1. Transakcje (opcjonalnie)

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

  3. Zabezpieczenia (opcjonalnie)

  4. Transport

  5. Koder (opcjonalnie)

Powiązania niestandardowego należy używać, gdy jedno z powiązań dostarczanych 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 konstruowane przy użyciu jednego z CustomBinding elementów z kolekcji elementów powiązania, które są "skumulowane" w określonej kolejności:

W poniższej tabeli przedstawiono podsumowanie opcji dla każdej warstwy.

Warstwa Opcje Wymagane
Transakcje Flow TransactionFlowBindingElement Nie
Niezawodność ReliableSessionBindingElement Nie
Zabezpieczenia Symetryczne, asymetryczne, Transport-Level Nie
Zmiana kształtu CompositeDuplexBindingElement Nie
Uaktualnienia transportu Strumień SSL, strumień Windows, równorzędny resolver Nie
Encoding Tekst, Binarny, MTOM, Niestandardowy Yes
Transport TCP, nazwane potoki, HTTP, HTTPS, smaki usługi MSMQ, niestandardowe Yes

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

Aby uzyskać omówienie sposobu używania powiązania niestandardowego do modyfikowania powiązania dostarczonego przez system, zobacz How to: Customize a System-Provided Binding (Jak dostosować System-Provided powiązania).

Zobacz też