Compartilhar via


<customBinding>

Oferece controle total sobre a pilha de mensagens para o usuário.

<configuration>
  <system.serviceModel>
    <bindings>
      <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>

Atributos e elementos

As seções a seguir descrevem os atributos, os elementos filho e os elementos pai

Atributos

Atributo Descrição
closeTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de fechamento. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
name Uma cadeia de caracteres que contém o nome de configuração da associação. Esse valor é uma cadeia de caracteres definida pelo usuário que atua como a cadeia de caracteres de identificação para a associação personalizada. Do .NET Framework 4 em diante, associações e comportamentos não precisam ter um nome. Para obter mais informações sobre a configuração padrão e as associações sem nome, incluindo os comportamentos, confira Configuração Simplificada e Configuração Simplificada para Serviços WCF.
openTimeout Um valor TimeSpan que especifica o intervalo de tempo fornecido para a conclusão de uma operação de abertura. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
receiveTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de recebimento. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
sendTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de envio. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.

Elementos filho

Elemento Descrição
<compositeDuplex> Especifica mensagens bidirecionais para a associação personalizada. É usado com transportes que não permitem comunicações duplex nativamente, por exemplo, HTTP. O TCP, por outro lado, permite comunicações duplex nativamente e não requer o uso desse elemento de associação para que o serviço envie mensagens de volta para um cliente.

O cliente deve expor um endereço para que o serviço faça contato e estabeleça uma conexão. Esse endereço do cliente é fornecido pelo atributo ClientBaseAddress.

Esse elemento é do tipo CompositeDuplexElement.
<pnrpPeerResolver> Especifica um resolvedor de nome de par do protocolo PNRP. Esse elemento é do tipo PnrpPeerResolverElement.
<reliableSession> Especifica a configuração para WS-Reliable Messaging. Quando esse elemento é adicionado a uma associação personalizada, o canal resultante pode dar suporte a garantias de entrega exatamente uma vez. Esse elemento é do tipo ReliableSessionElement.
<security> Especifica as opções de segurança da associação personalizada. Esse elemento é do tipo SecurityElement.
<sslStreamSecurity> Especifica as configurações de segurança para uma associação de fluxo SSL. Esse elemento é do tipo SslStreamSecurityElement.
<transactionFlow> Especifica que a associação dá suporte ao fluxo de transação e ao protocolo a ser usado pelo atributo transactionProtocol. Esse elemento é do tipo TransactionFlowElement.
<windowsStreamSecurity> Especifica as opções de segurança de streaming da associação personalizada. Esse elemento é do tipo WindowsStreamSecurityElement.

Elementos pai

Elemento Descrição
associações Contém todas as associações para aplicativos do Windows Communication Foundation.

Comentários

As associações personalizadas dão controle total sobre a pilha de mensagens do WCF. As associações personalizadas especiais podem ser criadas adicionando os elementos de configuração para entidades específicas. Por exemplo, o usuário pode combinar a seção httpsTransport, a seção reliableSession e a seção security para criar uma associação baseada em https confiável e segura.

Uma associação individual define a pilha de mensagens especificando os elementos de configuração para os elementos de pilha na ordem em que eles aparecem na pilha. Cada elemento define e configura o único elemento da pilha. Deve haver um e apenas um elemento de transporte em cada associação personalizada. Sem esse elemento, a pilha de mensagens está incompleta.

A ordem na qual os elementos aparecem na pilha importa, pois é a ordem na qual as operações são aplicadas à mensagem. A ordem recomendada de elementos de pilha é a seguinte:

  1. Transações (opcional)

  2. Mensagens confiáveis (opcional)

  3. Segurança (opcional)

  4. Transport

  5. Codificador (opcional)

Use uma associação personalizada quando uma das associações fornecidas pelo sistema não atender aos requisitos do serviço. Uma associação personalizada pode ser usada, por exemplo, para habilitar o uso de um novo transporte ou de um novo codificador em um ponto de extremidade de serviço.

Uma associação personalizada é construída usando uma das CustomBinding de uma coleção de elementos de associação que são "empilhados" em uma ordem específica:

A tabela a seguir resume as opções para cada camada.

Camada Opções Obrigatório
Fluxo de transação TransactionFlowBindingElement Não
Confiabilidade ReliableSessionBindingElement Não
Segurança Simétrico, assimétrico, nível de transporte Não
Alteração de forma CompositeDuplexBindingElement Não
Atualizações de transporte Fluxo SSL, fluxo do Windows, Resolvedor de Pares Não
Codificação Texto, Binário, MTOM, Personalizado Yes
Transport TCP, Pipes Nomeados, HTTP, HTTPS, variantes de MSMQ, Personalizado Yes

Além disso, você pode definir seus próprios elementos de associação e inseri-los entre qualquer uma das camadas definidas anteriormente.

Para obter uma discussão sobre como usar uma associação personalizada para modificar uma associação fornecida pelo sistema, confira Como personalizar uma associação fornecida pelo sistema.

Confira também