Конфигурация транзакции 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.