<customBinding><customBinding>

Proporciona el control completo sobre la pila de la mensajería para el usuario.Provides full control over the messaging stack for the user.

<configuration> <configuration>
   <> System. serviceModel  <system.serviceModel>
     <> de enlaces    <bindings>
       <customBinding >      <customBinding>

SintaxisSyntax

<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 y elementosAttributes and Elements

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primariosThe following sections describe attributes, child elements, and parent elements

AtributosAttributes

AtributoAttribute DESCRIPCIÓNDescription
closeTimeoutcloseTimeout Un valor TimeSpan que especifica el intervalo de tiempo del que dispone una operación de cierre para completarse.A TimeSpan value that specifies the interval of time provided for a close operation to complete. Este valor debe ser mayor o igual que Zero.This value should be greater than or equal to Zero. El valor predeterminado es 00:01:00.The default is 00:01:00.
Nombrename Cadena que contiene el nombre de configuración del enlace.A string that contains the configuration name of the binding. Este valor es una cadena definida por el usuario que actúa como cadena de identificación para el enlace personalizado.This value is a user-defined string that acts as the identification string for the custom binding. A partir de .NET Framework 4.NET Framework 4, no es necesario que los enlaces y los comportamientos tengan nombre.Starting with .NET Framework 4.NET Framework 4, bindings and behaviors are not required to have a name. Para obtener más información sobre la configuración predeterminada y los enlaces y comportamientos sin nombre, vea configuración simplificada y configuración simplificada para servicios WCF.For more information about default configuration and nameless bindings and behaviors, see Simplified Configuration and Simplified Configuration for WCF Services.
openTimeoutopenTimeout Valor de la estructura TimeSpan que especifica el intervalo de tiempo del que dispone una operación de apertura para completarse.A TimeSpan value that specifies the interval of time provided for an open operation to complete. Este valor debe ser mayor o igual que Zero.This value should be greater than or equal to Zero. El valor predeterminado es 00:01:00.The default is 00:01:00.
receiveTimeoutreceiveTimeout Un valor TimeSpan que especifica el intervalo de tiempo del que dispone una operación de recepción para completarse.A TimeSpan value that specifies the interval of time provided for a receive operation to complete. Este valor debe ser mayor o igual que Zero.This value should be greater than or equal to Zero. El valor predeterminado es 00:01:00.The default is 00:01:00.
sendTimeoutsendTimeout Un valor TimeSpan que especifica el intervalo de tiempo del que dispone una operación de envío para completarse.A TimeSpan value that specifies the interval of time provided for a send operation to complete. Este valor debe ser mayor o igual que Zero.This value should be greater than or equal to Zero. El valor predeterminado es 00:01:00.The default is 00:01:00.

Elementos secundariosChild Elements

ElementoElement DESCRIPCIÓNDescription
<compositeDuplex><compositeDuplex> Especifica la mensajería bidireccional para el enlace personalizado.Specifies two-way messaging to the custom binding. Se usa con los transportes que no permiten comunicaciones dúplex de manera nativa, como, por ejemplo, HTTP.It is used with transports that do not allow duplex communications natively, for example, HTTP. TCP, en cambio, permite comunicaciones dúplex de manera nativa y no requiere el uso de este elemento de enlace para que el servicio devuelva los mensajes a un cliente.TCP, by contrast, allows duplex communications natively, and does not require the use of this binding element for the service to send messages back to a client.

El cliente debe exponer una dirección para que el servicio haga contacto y establezca una conexión.The client must expose an address for the service to make contact and establish a connection. El atributo ClientBaseAddress proporciona esta dirección del cliente.This client address is provided by the ClientBaseAddress attribute.

Este elemento es del tipo CompositeDuplexElement.This element is of type CompositeDuplexElement.
<pnrpPeerResolver><pnrpPeerResolver> Especifica una resolución de nombre de mismo nivel de protocolo de resolución de nombres de mismo nivel (PNRP).Specifies a Peer Name Resolution Protocol (PNRP) peer name resolver. Este elemento es del tipo PnrpPeerResolverElement.This element is of type PnrpPeerResolverElement.
<reliableSession><reliableSession> Especifica el valor para la mensajería de confianza de WS.Specifies the setting for WS-Reliable Messaging. Cuando este elemento se agrega a un enlace personalizado, el canal resultante puede admitir las convicciones de la entrega exactamente una vez.When this element is added to a custom binding, the resulting channel can support exactly-once delivery assurances. Este elemento es del tipo ReliableSessionElement.This element is of type ReliableSessionElement.
<security><security> Especifica las opciones de seguridad del enlace personalizado.Specifies the options for security of the custom binding. Este elemento es del tipo SecurityElement.This element is of type SecurityElement.
<sslStreamSecurity><sslStreamSecurity> Especifica la configuración de seguridad para un enlace de secuencia SSL.Specifies the security settings for a SSL stream binding. Este elemento es del tipo SslStreamSecurityElement.This element is of type SslStreamSecurityElement.
<transactionFlow><transactionFlow> Especifica que el enlace soporta el flujo de transacción, y el protocolo que va a ser utilizado por el atributo transactionProtocol.Specifies that the binding supports transaction flow, and the protocol to be used by the transactionProtocol attribute. Este elemento es del tipo TransactionFlowElement.This element is of type TransactionFlowElement.
<windowsStreamSecurity><windowsStreamSecurity> Especifica las opciones de seguridad de transmisión del enlace personalizado.Specifies the options for streaming security of the custom binding. Este elemento es del tipo WindowsStreamSecurityElement.This element is of type WindowsStreamSecurityElement.

Elementos primariosParent Elements

ElementoElement DESCRIPCIÓNDescription
enlacesbindings Contiene todos los enlaces para las aplicaciones de Windows Communication Foundation.Contains all bindings for Windows Communication Foundation applications.

ComentariosRemarks

Los enlaces personalizados proporcionan el control completo sobre la pila de mensajería WCF.Custom bindings provide full control over the WCF messaging stack. Los enlaces diseñados especialmente se pueden crear agregando los elementos de configuración para las entidades concretas.Special tailored bindings can be created my adding the configuration elements for specific entities. Por ejemplo, el usuario puede combinar la sección httpsTransport, sección reliableSession y la sección security para crear https fiables y seguros basados en el enlace.For example, the user can combine the httpsTransport section, reliableSession section and the security section to create a reliable and secure https based binding.

Un enlace individual define la pila de mensajes mediante la especificación de los elementos de configuración para los elementos de la pila en el orden que aparecen en la pila.An individual binding defines the message stack by specifying the configuration elements for the stack elements in the order they appear on the stack. Cada elemento define y configura un elemento de la pila.Each element defines and configures the one element of the stack. Debe haber un único elemento de transporte en cada enlace personalizado.There must be one and only one transport element in each custom binding. Sin este elemento, la pila de la mensajería está incompleta.Without this element, the messaging stack is incomplete.

El orden de aparición de los elementos en la pila es importante, porque es el orden en el que las operaciones se aplican al mensaje.The order in which elements appear in the stack matters, because it is the order in which operations are applied to the message. El orden recomendado de elementos de pila es el siguiente:The recommended order of stack elements is the following:

  1. Transacciones (opcional)Transactions (optional)

  2. Mensajería de confianza (opcional)Reliable Messaging (optional)

  3. Seguridad (opcional)Security (optional)

  4. TransporteTransport

  5. Codificador (opcional)Encoder (optional)

Utilice un enlace personalizado cuando uno de los enlaces proporcionados por el sistema no cumpla los requisitos del servicio.Use a custom binding when one of the system-provided bindings does not meet the requirements of your service. Se pudo utilizar un enlace personalizado, por ejemplo, para habilitar el uso de un nuevo transporte o un nuevo codificador en un punto de conexión de servicio.A custom binding could be used, for example, to enable the use of a new transport or a new encoder at a service endpoint.

Un enlace personalizado se construye utilizando uno de CustomBinding de una colección de elementos de enlace que se apilan en un orden específico:A custom binding is constructed using one of the CustomBinding from a collection of binding elements that are "stacked" in a specific order:

La tabla siguiente resume las opciones de cada nivel.The following table summarizes the options for each layer.

CapaLayer OpcionesOptions ObligatorioRequired
Flujo de transaccionesTransaction Flow TransactionFlowBindingElement SinNo
ConfiabilidadReliability ReliableSessionBindingElement SinNo
SeguridadSecurity Simétrico, Asimétrico, Nivel de transporteSymmetric, Asymmetric, Transport-Level SinNo
Cambiar formaShape Change CompositeDuplexBindingElement SinNo
Actualizaciones de transporteTransport Upgrades Secuencia de SSL, secuencia de Windows, Resolución del mismo nivelSSL stream, Windows stream, Peer Resolver SinNo
EncodingEncoding Texto, binario, MTOM, personalizadoText, Binary, MTOM, Custom Yes
TransporteTransport TCP, canalizaciones con nombre, http, HTTPS, versiones de MSMQ, personalizadoTCP, Named Pipes, HTTP, HTTPS, flavors of MSMQ, Custom Yes

Además, puede definir sus propios elementos de enlace e insertarlos entre cualquiera de las capas definidas anteriores.In addition, you can define your own binding elements and insert them between any of the preceding defined layers.

Para obtener información sobre cómo utilizar un enlace personalizado para modificar un enlace proporcionado por el sistema, consulte How to: Personalizar un enlaceproporcionado por el sistema.For a discussion on how to use a custom binding to modify a system-provided binding, see How to: Customize a System-Provided Binding.

Vea tambiénSee also