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
可以在配置文件的 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 属性之间的较小值。
另请参见
其他资源
<binding>
Windows Communication Foundation Configuration Schema