ServiceModel 事务配置
Windows Communication Foundation (WCF) 提供了三个用于为服务配置事务的属性:transactionFlow
、transactionProtocol
和 transactionTimeout
。
配置 transactionFlow
WCF 提供的大多数预定义绑定都包含 transactionFlow
和 transactionProtocol
属性,以便你可使用特定的事务流协议为特定终结点配置用于接受传入事务的绑定。 此外,你可以使用 transactionFlow
元素及其 transactionProtocol
特性生成你自己的自定义绑定。 若要详细了解设置配置元素,请参阅 <binding> 和 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
可在配置文件的 behavior
元素中为 WCF 服务配置 transactionTimeout
属性。 下面的代码演示如何执行此操作。
<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 属性之间的较小值。