Compartir por


<customBinding>

Proporciona control total sobre la pila de mensajería para el usuario.

<configuración>
   <system.serviceModel>
     <Enlaces>
       <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 y elementos

En las secciones siguientes se describen los atributos, los elementos secundarios y los elementos primarios.

Attributes

Atributo Description
closeTimeout Valor TimeSpan que especifica el intervalo de tiempo proporcionado para que se complete una operación de cierre. Este valor debe ser mayor o igual que Zero. El valor predeterminado es 00:01:00.
nombre Cadena que contiene el nombre de configuración del enlace. Este valor es una cadena definida por el usuario que actúa como cadena de identificación para el enlace personalizado. A partir de .NET Framework 4, los enlaces y los comportamientos no son necesarios para tener un nombre. 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.
openTimeout Valor TimeSpan que especifica el intervalo de tiempo proporcionado para que se complete una operación abierta. Este valor debe ser mayor o igual que Zero. El valor predeterminado es 00:01:00.
receiveTimeout Valor TimeSpan que especifica el intervalo de tiempo proporcionado para que se complete una operación de recepción. Este valor debe ser mayor o igual que Zero. El valor predeterminado es 00:01:00.
sendTimeout Valor TimeSpan que especifica el intervalo de tiempo proporcionado para que se complete una operación de envío. Este valor debe ser mayor o igual que Zero. El valor predeterminado es 00:01:00.

Elementos secundarios

Elemento Description
<compositeDuplex> Especifica la mensajería bidireccional al enlace personalizado. Se usa con transportes que no permiten comunicaciones dúplex de forma nativa, por ejemplo, HTTP. TCP, por el contrario, permite comunicaciones dúplex de forma nativa y no requiere el uso de este elemento de enlace para que el servicio devuelva mensajes a un cliente.

El cliente debe exponer una dirección para que el servicio haga contacto y establezca una conexión. El atributo proporciona esta dirección de ClientBaseAddress cliente.

Este elemento es de tipo CompositeDuplexElement.
<pnrpPeerResolver> Especifica un solucionador de nombres del mismo nivel del Protocolo de resolución de nombres del mismo nivel (PNRP). Este elemento es de tipo PnrpPeerResolverElement.
<reliableSession> Especifica la configuración de WS-Reliable Messaging. Cuando este elemento se agrega a un enlace personalizado, el canal resultante puede admitir garantías de entrega exactamente una vez. Este elemento es de tipo ReliableSessionElement.
<seguridad> Especifica las opciones de seguridad del enlace personalizado. Este elemento es de tipo SecurityElement.
<sslStreamSecurity> Especifica la configuración de seguridad de un enlace de flujo SSL. Este elemento es de tipo SslStreamSecurityElement.
<transactionFlow> Especifica que el enlace admite el flujo de transacciones y el protocolo que va a usar el transactionProtocol atributo . Este elemento es de tipo TransactionFlowElement.
<windowsStreamSecurity> Especifica las opciones para la seguridad de streaming del enlace personalizado. Este elemento es de tipo WindowsStreamSecurityElement.

Elementos primarios

Elemento Description
bindings Contiene todos los enlaces para las aplicaciones de Windows Communication Foundation.

Observaciones

Los enlaces personalizados proporcionan control total sobre la pila de mensajería WCF. Se pueden crear enlaces personalizados especiales para agregar los elementos de configuración para entidades específicas. Por ejemplo, el usuario puede combinar la httpsTransport sección, reliableSession la sección y la security sección para crear un enlace basado en HTTPS confiable y seguro.

Un enlace individual define la pila de mensajes especificando los elementos de configuración de los elementos de pila en el orden en que aparecen en la pila. Cada elemento define y configura el elemento uno de la pila. Debe haber uno y solo un elemento de transporte en cada enlace personalizado. Sin este elemento, la pila de mensajería está incompleta.

El orden en el que aparecen los elementos en la pila es importante, ya que es el orden en el que se aplican las operaciones al mensaje. El orden recomendado de los elementos de pila es el siguiente:

  1. Transacciones (opcional)

  2. Reliable Messaging (opcional)

  3. Seguridad (opcional)

  4. Transport

  5. Codificador (opcional)

Use un enlace personalizado cuando uno de los enlaces proporcionados por el sistema no cumpla los requisitos del servicio. Se podría usar 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.

Un enlace personalizado se construye mediante una de las CustomBinding de una colección de elementos de enlace que se "apilan" en un orden específico:

En la tabla siguiente se resumen las opciones de cada capa.

Nivel Options Obligatorio
Flujo de transacciones TransactionFlowBindingElement No
Reliability ReliableSessionBindingElement No
Security Simétrico, asimétrico, Transport-Level No
Cambio de forma CompositeDuplexBindingElement No
Actualizaciones de transporte Secuencia SSL, secuencia de Windows, Resolución del mismo nivel No
Encoding Texto, binario, MTOM, personalizado
Transport TCP, Canalizaciones con nombre, HTTP, HTTPS, tipos de MSMQ, Personalizado

Además, puede definir sus propios elementos de enlace e insertarlos entre cualquiera de las capas definidas anteriores.

Para obtener una explicación sobre cómo usar un enlace personalizado para modificar un enlace proporcionado por el sistema, vea How to: Customize a System-Provided Binding.

Consulte también