Compartir a través de


Configuración de la transacción ServiceModel

Windows Communication Foundation (WCF) proporciona tres atributos para la configuración de transacciones para un servicio: transactionFlow, transactionProtocoly transactionTimeout.

Configuración de transactionFlow

La mayoría de los enlaces predefinidos que WCF proporciona contienen los atributos transactionProtocol y transactionFlow, para permitir la configuración del enlace para aceptar las transacciones entrantes de un extremo concreto utilizando un protocolo de flujo de transacciones específico. Además, puede utilizar el elemento transactionFlow y su atributo transactionProtocol para generar su propio enlace personalizado. Para obtener más información acerca de configuración de los elementos de configuración, vea <binding> y Windows Communication Foundation Configuration Schema.

El atributo transactionFlow especifica si el flujo de transacciones está habilitado para los extremos de servicio que utilizan el enlace.

Configuración de transactionProtocol

El atributo transactionProtocol especifica el protocolo de transacción a utilizar con extremos de servicio que utilizan el enlace.

El siguiente es un ejemplo de una sección de configuración que configura el enlace especificado para que admita el flujo de transacciones, así como un uso del protocolo WS-AtomicTransaction.

<netNamedPipeBinding>
   <binding name="test"
      closeTimeout="00:00:10"
      openTimeout="00:00:20" 
      receiveTimeout="00:00:30"
      sendTimeout="00:00:40"
      transactionFlow="true"
      transactionProtocol="WSAtomicTransactionOctober2004"
      hostNameComparisonMode="WeakWildcard"
      maxBufferSize="1001"
      maxConnections="123" 
      maxReceivedMessageSize="1000">
   </binding>
</netNamedPipeBinding>

Configuración de transactionTimeout

Puede configurar el atributo transactionTimeout para su servicio de WCF en el elemento behavior del archivo de configuración. El siguiente código muestra cómo hacerlo:

<configuration>
   <system.serviceModel>
      <behaviors>
         <behavior name="NewBehavior" transactionTimeout="00:01:00" /> <!-- 1 minute timeout -->
      </behaviors>
   </system.serviceModel>
</configuration>

El atributo transactionTimeout especifica el período dentro del que una nueva transacción creada en el servicio debe completarse. Se utiliza como tiempo de espera TransactionScope para cualquier operación que establezca una nueva transacción y si se aplica OperationBehaviorAttribute, la propiedad TransactionScopeRequired se establece en true.

El tiempo de espera especifica la duración desde la creación de la transacción hasta la finalización de la fase 1 en el protocolo de confirmación de dos fases.

Si este atributo se establece dentro de una sección de configuración de service, debería aplicar al menos un método del servicio correspondiente con OperationBehaviorAttribute, en el que la propiedad TransactionScopeRequired se establece en true.

Tenga en cuenta que el valor de tiempo de espera usado es el valor más pequeño entre este ajuste de configuración de transactionTimeout y cualquier propiedad TransactionTimeout.

Consulte también

Otros recursos

<binding>
Windows Communication Foundation Configuration Schema