Megosztás a következőn keresztül:


ServiceModel-tranzakció konfigurálása

A Windows Communication Foundation (WCF) három attribútumot biztosít egy szolgáltatás tranzakcióinak konfigurálásához: transactionFlow, transactionProtocolés transactionTimeout.

A transactionFlow konfigurálása

A WCF által biztosított előre definiált kötések többsége tartalmazza azokat transactionFlow és transactionProtocol az attribútumokat, így konfigurálhatja a kötést úgy, hogy egy adott végpont bejövő tranzakcióit fogadja el egy adott tranzakciós folyamatprotokoll használatával. Emellett az elemet és annak transactionFlow attribútumát transactionProtocol is használhatja saját egyéni kötés létrehozásához. A konfigurációs elemek beállításáról további információt a kötés> és a WCF konfigurációs sémája című témakörben talál<.

Az transactionFlow attribútum azt határozza meg, hogy a tranzakciós folyamat engedélyezve van-e a kötést használó szolgáltatásvégpontok esetében.

A transactionProtocol konfigurálása

Az transactionProtocol attribútum megadja a kötést használó szolgáltatásvégpontokhoz használandó tranzakcióprotokollt.

Az alábbiakban egy olyan konfigurációs szakasz látható, amely konfigurálja a megadott kötést a tranzakciós folyamat támogatásához, valamint a WS-AtomicTransaction protokoll használatát.

<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>  

A transactionTimeout konfigurálása

A WCF-szolgáltatás attribútumát a behavior konfigurációs fájl elemében konfigurálhatjatransactionTimeout. Az alábbi kód bemutatja, hogyan teheti ezt meg.

<configuration>  
   <system.serviceModel>  
      <behaviors>  
         <behavior name="NewBehavior" transactionTimeout="00:01:00" /> <!-- 1 minute timeout -->  
      </behaviors>  
   </system.serviceModel>  
</configuration>  

Az transactionTimeout attribútum azt az időszakot határozza meg, amelyen belül a szolgáltatásban létrehozott új tranzakciónak befejeződnie kell. A rendszer időtúllépésként használja az TransactionScope új tranzakciót létesítő műveleteknél, és ha OperationBehaviorAttribute alkalmazva van, a tulajdonság értéke true.TransactionScopeRequired

Az időtúllépés a tranzakció létrehozásának és a kétfázisú véglegesítési protokoll 1. fázisának befejezéséig eltelt időt adja meg.

Ha ez az attribútum egy service konfigurációs szakaszon belül van beállítva, akkor a megfelelő szolgáltatásnak OperationBehaviorAttributelegalább egy metódusát kell alkalmaznia, amelyben a TransactionScopeRequired tulajdonság be van állítva true.

Vegye figyelembe, hogy a használt időtúllépési érték a konfigurációs beállítás és bármely TransactionTimeout tulajdonság közötti transactionTimeout kisebb érték.

Lásd még