<customBinding>
Proporciona el control completo sobre la pila de la mensajería para el usuario.
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
Sintaxis
<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 siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios
Atributos
Atributo | Descripción |
---|---|
closeTimeout | Un valor TimeSpan que especifica el intervalo de tiempo del que dispone una operación de cierre para completarse. Este valor debe ser mayor o igual que Zero. El valor predeterminado es 00:01:00. |
name | 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, no es necesario que los enlaces y los comportamientos tengan nombre. Para más información acerca de la configuración, enlaces sin nombre y comportamientos predeterminados, consulte Configuración simplificada y Configuración simplificada de los servicios de WCF. |
openTimeout | Valor de la estructura TimeSpan que especifica el intervalo de tiempo del que dispone una operación de apertura para completarse. Este valor debe ser mayor o igual que Zero. El valor predeterminado es 00:01:00. |
receiveTimeout | Un valor TimeSpan que especifica el intervalo de tiempo del que dispone una operación de recepción para completarse. Este valor debe ser mayor o igual que Zero. El valor predeterminado es 00:01:00. |
sendTimeout | Un valor TimeSpan que especifica el intervalo de tiempo del que dispone una operación de envío para completarse. Este valor debe ser mayor o igual que Zero. El valor predeterminado es 00:01:00. |
Elementos secundarios
Elemento | Descripción |
---|---|
<compositeDuplex> | Especifica la mensajería bidireccional para el enlace personalizado. Se usa con los transportes que no permiten comunicaciones dúplex de manera nativa, como, por ejemplo, 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. El cliente debe exponer una dirección para que el servicio haga contacto y establezca una conexión. El atributo ClientBaseAddress proporciona esta dirección del cliente.Este elemento es del tipo CompositeDuplexElement. |
<pnrpPeerResolver> | Especifica una resolución de nombre de mismo nivel de protocolo de resolución de nombres de mismo nivel (PNRP). Este elemento es del tipo PnrpPeerResolverElement. |
<reliableSession> | Especifica el valor para la mensajería de confianza de WS. Cuando este elemento se agrega a un enlace personalizado, el canal resultante puede admitir las convicciones de la entrega exactamente una vez. Este elemento es del tipo ReliableSessionElement. |
<security> | Especifica las opciones de seguridad del enlace personalizado. Este elemento es del tipo SecurityElement. |
<sslStreamSecurity> | Especifica la configuración de seguridad para un enlace de secuencia SSL. Este elemento es del tipo SslStreamSecurityElement. |
<transactionFlow> | Especifica que el enlace soporta el flujo de transacción, y el protocolo que va a ser utilizado por el atributo transactionProtocol . Este elemento es del tipo TransactionFlowElement. |
<windowsStreamSecurity> | Especifica las opciones de seguridad de transmisión del enlace personalizado. Este elemento es del tipo WindowsStreamSecurityElement. |
Elementos primarios
Elemento | Descripción |
---|---|
enlaces | Contiene todos los enlaces para las aplicaciones de Windows Communication Foundation. |
Comentarios
Los enlaces personalizados proporcionan el control completo sobre la pila de mensajería WCF. Los enlaces diseñados especialmente se pueden crear agregando los elementos de configuración para las entidades concretas. 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.
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. Cada elemento define y configura un elemento de la pila. Debe haber un único elemento de transporte en cada enlace personalizado. Sin este elemento, la pila de la mensajería está incompleta.
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. El orden recomendado de elementos de pila es el siguiente:
Transacciones (opcional)
Mensajería de confianza (opcional)
Seguridad (opcional)
Transporte
Codificador (opcional)
Utilice un enlace personalizado cuando uno de los enlaces proporcionados por el sistema no cumpla los requisitos del servicio. 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.
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:
En la parte superior hay un TransactionFlowBindingElement opcional que permite el flujo de transacciones.
A continuación hay un ReliableSessionBindingElement opcional que proporciona una sesión y un mecanismo de orden, como se define en la especificación WS-ReliableMessaging. Esta noción de sesión puede cruzar SOAP y transportar intermediarios.
A continuación hay un elemento de enlace de seguridad opcional que proporciona las características de seguridad como la autorización, autenticación, protección y confidencialidad. Windows Communication Foundation (WCF) proporciona los siguientes elementos de enlace de seguridad:
A continuación están los modelos de mensaje opcionales especificados por elementos de enlace:
A continuación, se encuentran los elementos de enlace de asistentes/actualizaciones de transporte opcionales:
A continuación hay un elemento de enlace de codificación del mensaje requerido. Puede utilizar su propio transporte o utilizar uno de los siguientes enlaces de codificación del mensaje:
En la parte inferior hay un elemento de transporte necesario. Puede utilizar su propio transporte o uno de los elementos de enlace de transporte que ofrece Windows Communication Foundation (WCF):
La tabla siguiente resume las opciones de cada nivel.
Nivel | Opciones | Obligatorio |
---|---|---|
Flujo de transacciones | TransactionFlowBindingElement | No |
Confiabilidad | ReliableSessionBindingElement | No |
Seguridad | Simétrico, Asimétrico, Nivel de transporte | No |
Cambiar forma | CompositeDuplexBindingElement | No |
Actualizaciones de transporte | Secuencia de SSL, secuencia de Windows, Resolución del mismo nivel | No |
Encoding | Texto, binario, MTOM, personalizado | Sí |
Transporte | TCP, canalizaciones con nombre, http, HTTPS, versiones de MSMQ, personalizado | Sí |
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 utilizar un enlace personalizado para modificar un enlace proporcionado por el sistema, consulte Personalización de un enlace proporcionado por el sistema.