Delen via


<customBinding>

Biedt volledige controle over de berichtenstack voor de gebruiker.

<Configuratie>
  <system.serviceModel>
    <Bindings>
      <customBinding>

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>

Kenmerken en elementen

In de volgende secties worden kenmerken, onderliggende elementen en bovenliggende elementen beschreven

Kenmerken

Kenmerk Beschrijving
closeTimeout Een TimeSpan waarde die het opgegeven tijdsinterval aangeeft voor het voltooien van een close-bewerking. Deze waarde moet groter zijn dan of gelijk zijn aan Zero. De standaardwaarde is 00:01:00.
naam Een tekenreeks die de configuratienaam van de binding bevat. Deze waarde is een door de gebruiker gedefinieerde tekenreeks die fungeert als de identificatietekenreeks voor de aangepaste binding. Vanaf .NET Framework 4 zijn bindingen en gedrag niet vereist om een naam te hebben. Zie Vereenvoudigde configuratie en Vereenvoudigde configuratie voor WCF-services voor meer informatie over standaardconfiguratie en naamloze bindingen en gedrag.
openTimeout Een TimeSpan waarde die het tijdsinterval aangeeft dat een open bewerking moet worden voltooid. Deze waarde moet groter zijn dan of gelijk zijn aan Zero. De standaardwaarde is 00:01:00.
receiveTimeout Een TimeSpan waarde die het opgegeven tijdsinterval aangeeft voor het voltooien van een ontvangstbewerking. Deze waarde moet groter zijn dan of gelijk zijn aan Zero. De standaardwaarde is 00:01:00.
sendTimeout Een TimeSpan waarde die het tijdsinterval aangeeft dat een verzendbewerking moet worden voltooid. Deze waarde moet groter zijn dan of gelijk zijn aan Zero. De standaardwaarde is 00:01:00.

Onderliggende elementen

Element Beschrijving
<compositeDuplex> Hiermee geeft u berichten in twee richtingen naar de aangepaste binding. Het wordt gebruikt met transporten die geen systeemeigen dubbelzijdige communicatie toestaan, bijvoorbeeld HTTP. TCP staat daarentegen systeemeigen dubbelzijdige communicatie toe en vereist geen gebruik van dit bindingselement voor de service om berichten terug te sturen naar een client.

De client moet een adres voor de service beschikbaar maken om contact te maken en een verbinding tot stand te brengen. Dit clientadres wordt geleverd door het ClientBaseAddress kenmerk.

Dit element is van het type CompositeDuplexElement.
<pnrpPeerResolver> Hiermee geeft u een Peer Name Resolution Protocol (PNRP) peer name resolver. Dit element is van het type PnrpPeerResolverElement.
<reliableSession> Hiermee geeft u de instelling voor WS-Reliable Messaging. Wanneer dit element wordt toegevoegd aan een aangepaste binding, kan het resulterende kanaal exactly-once-leveringsgaranties ondersteunen. Dit element is van het type ReliableSessionElement.
<Veiligheid> Hiermee geeft u de opties voor beveiliging van de aangepaste binding. Dit element is van het type SecurityElement.
<sslStreamSecurity> Hiermee geeft u de beveiligingsinstellingen voor een SSL-stroombinding op. Dit element is van het type SslStreamSecurityElement.
<transactionFlow> Hiermee geeft u op dat de binding de transactiestroom ondersteunt en het protocol dat moet worden gebruikt door het transactionProtocol kenmerk. Dit element is van het type TransactionFlowElement.
<windowsStreamSecurity> Hiermee geeft u de opties voor streamingbeveiliging van de aangepaste binding. Dit element is van het type WindowsStreamSecurityElement.

Bovenliggende elementen

Element Beschrijving
Bindings Bevat alle bindingen voor Windows Communication Foundation-toepassingen.

Opmerkingen

Aangepaste bindingen bieden volledige controle over de WCF-berichtenstack. Er kunnen speciale op maat gemaakte bindingen worden gemaakt door de configuratie-elementen voor specifieke entiteiten toe te voegen. De gebruiker kan bijvoorbeeld de httpsTransport sectie, reliableSession sectie en sectie security combineren om een betrouwbare en veilige op HTTPS gebaseerde binding te maken.

Een afzonderlijke binding definieert de berichtenstack door de configuratie-elementen voor de stack-elementen op te geven in de volgorde waarin ze op de stack worden weergegeven. Elk element definieert en configureert het ene element van de stack. Er moet slechts één transportelement in elke aangepaste binding zijn. Zonder dit element is de berichtenstack onvolledig.

De volgorde waarin elementen in de stack worden weergegeven, is van belang, omdat dit de volgorde is waarin bewerkingen worden toegepast op het bericht. De aanbevolen volgorde van stack-elementen is de volgende:

  1. Transacties (optioneel)

  2. Reliable Messaging (optioneel)

  3. Beveiliging (optioneel)

  4. Transport

  5. Encoder (optioneel)

Gebruik een aangepaste binding wanneer een van de door het systeem geleverde bindingen niet voldoet aan de vereisten van uw service. Een aangepaste binding kan bijvoorbeeld worden gebruikt om het gebruik van een nieuw transport of een nieuwe encoder op een service-eindpunt mogelijk te maken.

Een aangepaste binding wordt samengesteld met behulp van een van de CustomBinding uit een verzameling bindingselementen die in een specifieke volgorde zijn 'gestapeld':

De volgende tabel bevat een overzicht van de opties voor elke laag.

Laag Opties Vereist
Transactiestroom TransactionFlowBindingElement Nee
Betrouwbaarheid ReliableSessionBindingElement Nee
Beveiliging Symmetrisch, Asymmetrisch, Transport-Level Nee
Vorm wijzigen CompositeDuplexBindingElement Nee
Transportupgrades SSL-stream, Windows-stream, Peer Resolver Nee
Encoding Tekst, Binair, MTOM, Aangepast Ja
Transport TCP, Named Pipes, HTTP, HTTPS, smaken van MSMQ, aangepast Ja

Daarnaast kunt u uw eigen bindingselementen definiëren en deze invoegen tussen een van de voorgaande gedefinieerde lagen.

Zie Procedure: een System-Provided-binding aanpassen voor een discussie over het gebruik van een aangepaste binding om een door het systeem geleverde binding te wijzigen.

Zie ook