Dela via


ServiceModel-transaktionskonfiguration

Windows Communication Foundation (WCF) innehåller tre attribut för att konfigurera transaktioner för en tjänst: transactionFlow, transactionProtocoloch transactionTimeout.

Konfigurera transactionFlow

De flesta fördefinierade bindningar som WCF tillhandahåller innehåller attributen transactionFlow och transactionProtocol så att du kan konfigurera bindningen så att den accepterar inkommande transaktioner för en specifik slutpunkt med hjälp av ett specifikt transaktionsflödesprotokoll. Dessutom kan du använda elementet transactionFlow och dess transactionProtocol attribut för att skapa en egen anpassad bindning. Mer information om hur du ställer in konfigurationselementen finns i bindning> och WCF-konfigurationsschema.<

Attributet transactionFlow anger om transaktionsflödet är aktiverat för tjänstslutpunkter som använder bindningen.

Konfigurera transactionProtocol

Attributet transactionProtocol anger vilket transaktionsprotokoll som ska användas med tjänstslutpunkter som använder bindningen.

Följande är ett exempel på ett konfigurationsavsnitt som konfigurerar den angivna bindningen för att stödja transaktionsflödet, samt en användning av WS-AtomicTransaction-protokollet.

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

Konfigurera transactionTimeout

Du kan konfigurera transactionTimeout attributet för WCF-tjänsten i -elementet behavior i konfigurationsfilen. Följande kod visar hur du gör detta.

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

Attributet transactionTimeout anger den tidsperiod inom vilken en ny transaktion som skapas i tjänsten måste slutföras. Den används som TransactionScope timeout för alla åtgärder som upprättar en ny transaktion, och om OperationBehaviorAttribute den tillämpas TransactionScopeRequired är egenskapen inställd på true.

Tidsgränsen anger varaktigheten från det att transaktionen skapades till slutförandet av fas 1 i tvåfas-incheckningsprotokollet.

Om det här attributet anges i ett service konfigurationsavsnitt bör du använda minst en metod för motsvarande tjänst med OperationBehaviorAttribute, där TransactionScopeRequired egenskapen är inställd på true.

Observera att det timeout-värde som används är det mindre värdet mellan den här transactionTimeout konfigurationsinställningen och alla TransactionTimeout egenskaper.

Se även