ServiceModel 事务配置

Windows Communication Foundation (WCF) 提供了以下三个用于为服务配置事务的属性:transactionFlowtransactionProtocoltransactionTimeout

配置 transactionFlow

WCF 提供的大多数预定义绑定都包含 transactionFlowtransactionProtocol 属性,以便您可以使用特定的事务流协议为特定终结点配置用于接受传入事务的绑定。此外,您可以使用 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