<customBinding>
Fornece controlo total sobre a pilha de mensagens para o utilizador.
<configuração>
<system.serviceModel>
<enlaces>
<customBinding>
Sintaxe
<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>
Atributos e Elementos
As secções seguintes descrevem atributos, elementos subordinados e elementos principais
Atributos
Atributo | Descrição |
---|---|
closeTimeout | Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de fecho. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00. |
name | Uma cadeia que contém o nome de configuração do enlace. Este valor é uma cadeia definida pelo utilizador que atua como a cadeia de identificação do enlace personalizado. A partir do .NET Framework 4, os enlaces e comportamentos não têm de ter um nome. Para obter mais informações sobre a configuração predefinida e os enlaces e comportamentos sem nome, veja Configuração Simplificada e Configuração Simplificada para os Serviços WCF. |
openTimeout | Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação aberta. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00. |
receiveTimeout | Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de receção. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00. |
sendTimeout | Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de envio. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00. |
Elementos Subordinados
Elemento | Descrição |
---|---|
<compositeDuplex> | Especifica mensagens bidirecionais para o enlace personalizado. É utilizado com transportes que não permitem comunicações duplex nativamente, por exemplo, HTTP. Por outro lado, o TCP permite comunicações frente e verso nativamente e não requer a utilização deste elemento de enlace para o serviço enviar mensagens de volta para um cliente. O cliente tem de expor um endereço para o serviço estabelecer contacto e estabelecer uma ligação. Este endereço de cliente é fornecido pelo ClientBaseAddress atributo .Este elemento é do tipo CompositeDuplexElement. |
<pnrpPeerResolver> | Especifica uma resolução de nomes de elemento da rede (PNRP). Este elemento é do tipo PnrpPeerResolverElement. |
<reliableSession> | Especifica a definição para WS-Reliable Messaging. Quando este elemento é adicionado a um enlace personalizado, o canal resultante pode suportar garantias de entrega exatamente uma vez. Este elemento é do tipo ReliableSessionElement. |
<segurança> | Especifica as opções de segurança do enlace personalizado. Este elemento é do tipo SecurityElement. |
<sslStreamSecurity> | Especifica as definições de segurança para um enlace de fluxo SSL. Este elemento é do tipo SslStreamSecurityElement. |
<transactionFlow> | Especifica que o enlace suporta o fluxo de transação e o protocolo a ser utilizado pelo transactionProtocol atributo . Este elemento é do tipo TransactionFlowElement. |
<windowsStreamSecurity> | Especifica as opções para a segurança de transmissão em fluxo do enlace personalizado. Este elemento é do tipo WindowsStreamSecurityElement. |
Elementos Principais
Elemento | Descrição |
---|---|
enlaces | Contém todos os enlaces para aplicações do Windows Communication Foundation. |
Observações
Os enlaces personalizados fornecem controlo total sobre a pilha de mensagens WCF. Podem ser criados enlaces personalizados especiais ao adicionar os elementos de configuração para entidades específicas. Por exemplo, o utilizador pode combinar a httpsTransport
secção, reliableSession
a secção e a security
secção para criar um enlace baseado em https fiável e seguro.
Um enlace individual define a pilha de mensagens ao especificar os elementos de configuração para os elementos da pilha pela ordem em que aparecem na pilha. Cada elemento define e configura o elemento único da pilha. Tem de existir um e apenas um elemento de transporte em cada enlace personalizado. Sem este elemento, a pilha de mensagens está incompleta.
A ordem pela qual os elementos aparecem na pilha é importante, porque é a ordem pela qual as operações são aplicadas à mensagem. A ordem recomendada dos elementos de pilha é a seguinte:
Transações (opcional)
Reliable Messaging (opcional)
Segurança (opcional)
Transporte
Codificador (opcional)
Utilize um enlace personalizado quando um dos enlaces fornecidos pelo sistema não cumprir os requisitos do seu serviço. Pode ser utilizado um enlace personalizado, por exemplo, para permitir a utilização de um novo transporte ou de um novo codificador num ponto final de serviço.
Um enlace personalizado é construído com um dos CustomBinding elementos de uma coleção de elementos de enlace que são "empilhados" numa ordem específica:
Na parte superior encontra-se uma opção TransactionFlowBindingElement que permite transações de fluxo.
Em seguida, é opcional ReliableSessionBindingElement que fornece um mecanismo de ordenação e sessão conforme definido na especificação de WS-ReliableMessaging. Esta noção de sessão pode atravessar os intermediários soap e de transporte.
Segue-se um elemento de enlace de segurança opcional que fornece funcionalidades de segurança como autorização, autenticação, proteção e confidencialidade. Os seguintes elementos de enlace de segurança são fornecidos pelo Windows Communication Foundation (WCF):
Em seguida, seguem-se os padrões de mensagem opcionais especificados pelos elementos de enlace:
Em seguida, encontram-se os elementos de enlace opcionais de atualizações de transporte/auxiliares:
Em seguida, é necessário um elemento de encodificação de mensagens necessário. Pode utilizar o seu próprio transporte ou utilizar um dos seguintes enlaces de codificação de mensagens:
Na parte inferior encontra-se um elemento de transporte necessário. Pode utilizar o seu próprio transporte ou utilizar um dos elementos de enlace de transporte fornecidos pelo Windows Communication Foundation (WCF):
A tabela seguinte resume as opções para cada camada.
Camada | Opções | Necessário |
---|---|---|
Fluxo de Transação | TransactionFlowBindingElement | No |
Fiabilidade | ReliableSessionBindingElement | No |
Segurança | Simétrica, Assimétrica, Transport-Level | No |
Alteração da Forma | CompositeDuplexBindingElement | No |
Atualizações de Transporte | Transmissão em fluxo SSL, transmissão em fluxo do Windows, Resolução ponto a ponto | No |
Encoding | Texto, Binário, MTOM, Personalizado | Yes |
Transporte | TCP, Pipes Nomeados, HTTP, HTTPS, sabores de MSMQ, Custom | Yes |
Além disso, pode definir os seus próprios elementos de enlace e inseri-los entre qualquer uma das camadas definidas anteriores.
Para uma discussão sobre como utilizar um enlace personalizado para modificar um enlace fornecido pelo sistema, veja Como: Personalizar um Enlace de System-Provided.