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