<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:

  1. Transações (opcional)

  2. Reliable Messaging (opcional)

  3. Segurança (opcional)

  4. Transporte

  5. 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:

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.

Ver também