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
可以在配置文件的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 属性之间的较小值。