Dela via


<customBinding>

Ger fullständig kontroll över meddelandestacken för användaren.

<Konfiguration>
  <system.serviceModel>
    <Bindningar>
      <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>

Attribut och element

I följande avsnitt beskrivs attribut, underordnade element och överordnade element

Attribut

Attribut Beskrivning
closeTimeout Ett TimeSpan värde som anger tidsintervallet för en stängningsåtgärd som ska slutföras. Det här värdet ska vara större än eller lika med Zero. Standardvärdet är 00:01:00.
name En sträng som innehåller bindningens konfigurationsnamn. Det här värdet är en användardefinierad sträng som fungerar som identifieringssträng för den anpassade bindningen. Från och med .NET Framework 4 krävs inte bindningar och beteenden för att ha ett namn. Mer information om standardkonfiguration och namnlösa bindningar och beteenden finns i Förenklad konfiguration och förenklad konfiguration för WCF-tjänster.
openTimeout Ett TimeSpan värde som anger tidsintervallet för en öppen åtgärd som ska slutföras. Det här värdet ska vara större än eller lika med Zero. Standardvärdet är 00:01:00.
receiveTimeout Ett TimeSpan värde som anger tidsintervallet för en mottagningsåtgärd som ska slutföras. Det här värdet ska vara större än eller lika med Zero. Standardvärdet är 00:01:00.
sendTimeout Ett TimeSpan värde som anger tidsintervallet för en sändningsåtgärd som ska slutföras. Det här värdet ska vara större än eller lika med Zero. Standardvärdet är 00:01:00.

Underordnade element

Element Beskrivning
<compositeDuplex> Anger tvåvägsmeddelanden till den anpassade bindningen. Det används med transporter som inte tillåter dubbelsidig kommunikation internt, till exempel HTTP. TCP tillåter däremot dubbelsidig kommunikation internt och kräver inte att det här bindningselementet används för att tjänsten ska kunna skicka tillbaka meddelanden till en klient.

Klienten måste exponera en adress för att tjänsten ska kunna kontakta och upprätta en anslutning. Den här klientadressen tillhandahålls av attributet ClientBaseAddress .

Det här elementet är av typen CompositeDuplexElement.
<pnrpPeerResolver> Anger en PNRP-peernamnmatchare (Peer Name Resolution Protocol). Det här elementet är av typen PnrpPeerResolverElement.
<reliableSession> Anger inställningen för WS-Reliable Messaging. När det här elementet läggs till i en anpassad bindning kan den resulterande kanalen ha stöd för leveransgarantier exakt en gång. Det här elementet är av typen ReliableSessionElement.
<Säkerhet> Anger säkerhetsalternativen för den anpassade bindningen. Det här elementet är av typen SecurityElement.
<sslStreamSecurity> Anger säkerhetsinställningarna för en SSL-dataströmbindning. Det här elementet är av typen SslStreamSecurityElement.
<transactionFlow> Anger att bindningen stöder transaktionsflödet och det protokoll som ska användas av attributet transactionProtocol . Det här elementet är av typen TransactionFlowElement.
<windowsStreamSecurity> Anger alternativen för direktuppspelningssäkerhet för den anpassade bindningen. Det här elementet är av typen WindowsStreamSecurityElement.

Överordnade element

Element Beskrivning
Bindningar Innehåller alla bindningar för Windows Communication Foundation-program.

Kommentarer

Anpassade bindningar ger fullständig kontroll över WCF-meddelandestacken. Särskilda skräddarsydda bindningar kan skapas när jag lägger till konfigurationselementen för specifika entiteter. Användaren kan till exempel kombinera httpsTransport avsnittet, reliableSession avsnittet och security avsnittet för att skapa en tillförlitlig och säker https-baserad bindning.

En enskild bindning definierar meddelandestacken genom att ange konfigurationselementen för stackelementen i den ordning de visas på stacken. Varje element definierar och konfigurerar stackens enda element. Det får bara finnas ett transportelement i varje anpassad bindning. Utan det här elementet är meddelandestacken ofullständig.

Ordningen i vilken element visas i stacken spelar roll, eftersom det är den ordning i vilken åtgärder tillämpas på meddelandet. Den rekommenderade ordningen för stackelement är följande:

  1. Transaktioner (valfritt)

  2. Reliable Messaging (valfritt)

  3. Säkerhet (valfritt)

  4. Transport

  5. Kodare (valfritt)

Använd en anpassad bindning när en av de bindningar som tillhandahålls av systemet inte uppfyller kraven för din tjänst. En anpassad bindning kan till exempel användas för att aktivera användning av en ny transport eller en ny kodare vid en tjänstslutpunkt.

En anpassad bindning skapas med en av CustomBinding från en samling bindningselement som är "staplade" i en viss ordning:

I följande tabell sammanfattas alternativen för varje lager.

Skikt Alternativ Obligatorisk
Transaktionsflöde TransactionFlowBindingElement Nej
Tillförlitlighet ReliableSessionBindingElement Nej
Säkerhet Symmetrisk, asymmetrisk, Transport-Level Nej
Ändra figur CompositeDuplexBindingElement Nej
Transportuppgraderingar SSL-ström, Windows-ström, Peer Resolver Nej
Kodning Text, Binär, MTOM, Anpassad Ja
Transport TCP, Named Pipes, HTTP, HTTPS, flavors of MSMQ, Custom Ja

Dessutom kan du definiera egna bindningselement och infoga dem mellan något av de föregående definierade lagren.

En diskussion om hur du använder en anpassad bindning för att ändra en bindning som tillhandahålls av systemet finns i Så här: Anpassa en System-Provided bindning.

Se även