Поделиться через


Конфигурация транзакции ServiceModel

Windows Communication Foundation (WCF) предоставляет три атрибута для настройки транзакций для службы: transactionFlow, transactionProtocolи transactionTimeout.

Настройка атрибута transactionFlow

Большинство предопределенных привязок WCF содержит transactionFlow и transactionProtocol атрибуты, чтобы настроить привязку для приема входящих транзакций для определенной конечной точки с помощью определенного протокола потока транзакций. Кроме того, вы можете использовать элемент transactionFlow и его атрибут transactionProtocol для сборки вашей собственной пользовательской привязки. Дополнительные сведения о настройке элементов конфигурации см. в разделе <привязки> и схемы конфигурации WCF.

Атрибут transactionFlow задает, разрешен ли поток транзакций для конечных точек службы, использующих данную привязку.

Настройка атрибута transactionProtocol

Атрибут transactionProtocol задает протокол транзакций, который должен использоваться конечными точками, использующими данную привязку.

Ниже приведен пример раздела конфигурации, настраивающий указанную привязку для поддержки потока транзакций, а также для использования протокола 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>  

Настройка атрибута transactionTimeout

Атрибут службы WCF можно настроить transactionTimeout в behavior элементе файла конфигурации. В следующем коде показано, как это сделать.

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

Атрибут transactionTimeout задает период времени, в течение которого созданная в службе новая транзакция должна быть завершена. Он используется в качестве времени ожидания TransactionScope для любой операции, устанавливающей новую транзакцию; если применен атрибут OperationBehaviorAttribute, для свойства TransactionScopeRequired устанавливается значение true.

Время ожидания задает промежуток времени от создания транзакции до завершения фазы 1 в протоколе двухфазной фиксации.

Если этот атрибут задан в разделе конфигурации service, необходимо применить по меньшей мере один метод соответствующей службы с атрибутом OperationBehaviorAttribute, в котором для свойства TransactionScopeRequired задано значение true.

Обратите внимание, что для времени ожидания всегда используется меньшее из значений этого параметра конфигурации transactionTimeout и любого из свойств TransactionTimeout.

См. также