ServiceModel 事务配置

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

配置 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 属性之间的较小值。

另请参阅