<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:
Transaktioner (valfritt)
Reliable Messaging (valfritt)
Säkerhet (valfritt)
Transport
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:
Längst upp finns ett valfritt TransactionFlowBindingElement alternativ som tillåter flödande transaktioner.
Nästa är ett valfritt ReliableSessionBindingElement som tillhandahåller en sessions- och beställningsmekanism enligt definitionen i WS-ReliableMessaging-specifikationen. Den här uppfattningen om en session kan korsa SOAP och transportförmedlare.
Nästa är ett valfritt säkerhetsbindningselement som tillhandahåller säkerhetsfunktioner som auktorisering, autentisering, skydd och konfidentialitet. Följande säkerhetsbindningselement tillhandahålls av Windows Communication Foundation (WCF):
Härnäst är de valfria meddelandemönster som anges av bindningselement:
Härnäst är de valfria transportuppgraderingar/hjälpkomponenterna som binder element:
Nästa är ett obligatoriskt meddelandekodningsbindningselement. Du kan använda din egen transport eller använda någon av följande meddelandekodningsbindningar:
Längst ned finns ett obligatoriskt transportelement. Du kan använda din egen transport eller använda ett av transportbindningselementen som tillhandahålls av Windows Communication Foundation (WCF):
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.