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 屬性間的較小值。