Конфигурация транзакции ServiceModel
В Windows Communication Foundation (WCF) предусмотрено три атрибута для настройки транзакций для службы: transactionFlow, transactionProtocol и transactionTimeout.
Настройка атрибута transactionFlow
Большинство заранее определенных привязок, предоставляемых WCF, содержат атрибуты transactionFlow и transactionProtocol, чтобы можно было настроить привязку на прием входящих транзакций для конкретной конечной точки с использованием определенного протокола потока транзакций. Кроме того, можно использовать элемент transactionFlow и его атрибут transactionProtocol для построения собственной пользовательской привязки. Дополнительные сведения настройке элементов конфигурации см. в разделах <binding> и Windows Communication Foundation Configuration Schema.
Атрибут 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
Можно настроить transactionTimeout для службы WCF в элементе 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.
См. также
Другие ресурсы
<binding>
Windows Communication Foundation Configuration Schema