Freigeben über


<Custombinding>

Bietet vollständige Kontrolle über den Messaging-Stapel für den Benutzer.

<Konfiguration>
   <system.serviceModel>
     <Einbände>
       <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>

Attribute und Elemente

In den folgenden Abschnitten werden Attribute, untergeordnete Elemente und übergeordnete Elemente beschrieben.

Attribute

Merkmal Description
closeTimeout Ein TimeSpan Wert, der das Zeitintervall angibt, das für einen abschlussden Vorgang bereitgestellt wird. Dieser Wert sollte größer oder gleich Zerosein. Der Standardwert ist 00:01:00.
name Eine Zeichenfolge, die den Konfigurationsnamen der Bindung enthält. Dieser Wert ist eine benutzerdefinierte Zeichenfolge, die als Identifikationszeichenfolge für die benutzerdefinierte Bindung fungiert. Ab .NET Framework 4 müssen Bindungen und Verhaltensweisen keinen Namen haben. Weitere Informationen zu Standardkonfigurationen und namenslosen Bindungen und Verhaltensweisen finden Sie unter Vereinfachte Konfiguration und vereinfachte Konfiguration für WCF-Dienste.
openTimeout Ein TimeSpan Wert, der das Für den Abschluss eines geöffneten Vorgangs bereitgestellte Zeitintervall angibt. Dieser Wert sollte größer oder gleich Zerosein. Der Standardwert ist 00:01:00.
receiveTimeout Ein TimeSpan Wert, der das Für den Abschluss eines Empfangsvorgangs bereitgestellte Zeitintervall angibt. Dieser Wert sollte größer oder gleich Zerosein. Der Standardwert ist 00:01:00.
sendTimeout Ein TimeSpan Wert, der das Für den Abschluss eines Sendevorgangs bereitgestellte Zeitintervall angibt. Dieser Wert sollte größer oder gleich Zerosein. Der Standardwert ist 00:01:00.

Untergeordnete Elemente

Element Description
<compositeDuplex> Gibt bidirektionale Nachrichten an die benutzerdefinierte Bindung an. Es wird mit Transporten verwendet, die die Duplexkommunikation nicht nativ zulassen, z. B. HTTP. TCP lässt dagegen die Duplexkommunikation nativ zu und erfordert nicht die Verwendung dieses Bindungselements für den Dienst, um Nachrichten an einen Client zurückzusenden.

Der Client muss eine Adresse für den Dienst verfügbar machen, um Kontakt herzustellen und eine Verbindung herzustellen. Diese Clientadresse wird vom ClientBaseAddress Attribut bereitgestellt.

Dieses Element ist vom Typ CompositeDuplexElement.
<pnrpPeerResolver> Gibt einen Peer Name Resolution Protocol (PNRP)-Peernamenlöser an. Dieses Element ist vom Typ PnrpPeerResolverElement.
<Reliablesession> Gibt die Einstellung für WS-Reliable Messaging an. Wenn dieses Element zu einer benutzerdefinierten Bindung hinzugefügt wird, kann der resultierende Kanal genau einmal übermittlungssicher unterstützen. Dieses Element ist vom Typ ReliableSessionElement.
<Sicherheit> Gibt die Optionen für die Sicherheit der benutzerdefinierten Bindung an. Dieses Element ist vom Typ SecurityElement.
<sslStreamSecurity> Gibt die Sicherheitseinstellungen für eine SSL-Datenstrombindung an. Dieses Element ist vom Typ SslStreamSecurityElement.
<Transactionflow> Gibt an, dass die Bindung den Transaktionsfluss unterstützt, und das Protokoll, das vom transactionProtocol Attribut verwendet werden soll. Dieses Element ist vom Typ TransactionFlowElement.
<windowsStreamSecurity> Gibt die Optionen für die Streamingsicherheit der benutzerdefinierten Bindung an. Dieses Element ist vom Typ WindowsStreamSecurityElement.

Übergeordnete Elemente

Element Description
bindings Enthält alle Bindungen für Windows Communication Foundation-Anwendungen.

Bemerkungen

Benutzerdefinierte Bindungen bieten die vollständige Kontrolle über den WCF-Messagingstapel. Spezielle maßgeschneiderte Bindungen können erstellt werden, um die Konfigurationselemente für bestimmte Entitäten hinzuzufügen. Beispielsweise kann der Benutzer den Abschnitt, httpsTransport den reliableSession Abschnitt und den security Abschnitt kombinieren, um eine zuverlässige und sichere httpsbasierte Bindung zu erstellen.

Eine einzelne Bindung definiert den Nachrichtenstapel, indem die Konfigurationselemente für die Stapelelemente in der Reihenfolge angegeben werden, in der sie im Stapel angezeigt werden. Jedes Element definiert und konfiguriert das ein Element des Stapels. Es muss ein und nur ein Transportelement in jeder benutzerdefinierten Bindung vorhanden sein. Ohne dieses Element ist der Messaging-Stapel unvollständig.

Die Reihenfolge, in der Elemente im Stapel angezeigt werden, ist wichtig, da es sich um die Reihenfolge handelt, in der Vorgänge auf die Nachricht angewendet werden. Die empfohlene Reihenfolge von Stapelelementen lautet wie folgt:

  1. Transaktionen (optional)

  2. Zuverlässiges Messaging (optional)

  3. Sicherheit (optional)

  4. Transport

  5. Encoder (optional)

Verwenden Sie eine benutzerdefinierte Bindung, wenn eine der vom System bereitgestellten Bindungen nicht den Anforderungen Ihres Diensts entspricht. Eine benutzerdefinierte Bindung kann z. B. verwendet werden, um die Verwendung eines neuen Transports oder eines neuen Encoders an einem Dienstendpunkt zu ermöglichen.

Eine benutzerdefinierte Bindung wird mithilfe einer der CustomBinding Aus einer Sammlung von Bindungselementen erstellt, die in einer bestimmten Reihenfolge "gestapelt" sind:

In der folgenden Tabelle sind die Optionen für jede Ebene zusammengefasst.

Ebene Options Erforderlich
Transaktionsfluss TransactionFlowBindingElement Nein
Zuverlässigkeit ReliableSessionBindingElement Nein
Sicherheit Symmetrisch, asymmetrisch, Transport-Level Nein
Formänderung CompositeDuplexBindingElement Nein
Transportupgrades SSL-Stream, Windows-Stream, Peer Resolver Nein
Codierung Text, Binärdatei, MTOM, benutzerdefiniert Yes
Transport TCP, Named Pipes, HTTP, HTTPS, Aromen von MSMQ, Custom Yes

Darüber hinaus können Sie eigene Bindungselemente definieren und zwischen einer der vorherigen definierten Ebenen einfügen.

Eine Erläuterung zur Verwendung einer benutzerdefinierten Bindung zum Ändern einer vom System bereitgestellten Bindung finden Sie unter How to: Customize a System-Provided Binding.

Siehe auch