Partager via


WebMethodAttribute.TransactionOption Propriété

Définition

Indique la prise en charge de transactions d'une méthode de service Web XML.

public:
 property System::EnterpriseServices::TransactionOption TransactionOption { System::EnterpriseServices::TransactionOption get(); void set(System::EnterpriseServices::TransactionOption value); };
public:
 property System::Web::Services::TransactionOption TransactionOption { System::Web::Services::TransactionOption get(); void set(System::Web::Services::TransactionOption value); };
public System.EnterpriseServices.TransactionOption TransactionOption { get; set; }
public System.Web.Services.TransactionOption TransactionOption { get; set; }
member this.TransactionOption : System.EnterpriseServices.TransactionOption with get, set
member this.TransactionOption : System.Web.Services.TransactionOption with get, set
Public Property TransactionOption As TransactionOption

Valeur de propriété

TransactionOption
TransactionOption

Prise en charge de transactions d'une méthode de service Web XML. La valeur par défaut est Disabled.

Exemples

L’exemple ci-dessous commence une nouvelle transaction lorsque la Transfer méthode est appelée.

// <Snippet1>
<%@ WebService Language="C#" Class="Bank"%>
<%@ assembly name="System.EnterpriseServices,Version=1.0.3300.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" %>
 
 using System;
 using System.Web.Services;
 using System.EnterpriseServices;
 
 public class Bank : WebService {
 
      [ WebMethod(TransactionOption=TransactionOption.RequiresNew) ]
      public void Transfer(long Amount, long AcctNumberTo, long AcctNumberFrom)  {
            MyCOMObject objBank = new MyCOMObject();
               
            if (objBank.GetBalance(AcctNumberFrom) < Amount )
               // Explicitly abort the transaction.
               ContextUtil.SetAbort();
            else {
               // Credit and Debit methods explicitly vote within
               // the code for their methods whether to commit or
               // abort the transaction.
               objBank.Credit(Amount, AcctNumberTo);
               objBank.Debit(Amount, AcctNumberFrom);
            }
      }
 }
      
// </Snippet1>


 public class MyCOMObject {
    public long GetBalance(long AcctNumber){return 0;}
    public void Credit( long Amount, long AcctNumber) {}
    public void Debit( long Amount, long AcctNumber) {}

 }
' <Snippet1>
<%@ WebService Language="VB" Class="Bank"%>
<%@ assembly name="System.EnterpriseServices,Version=1.0.3300.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" %>
 
Imports System
Imports System.Web.Services
Imports System.EnterpriseServices

Public Class Bank
    Inherits WebService    
    
    <WebMethod(TransactionOption := TransactionOption.RequiresNew)> _	
    Public Sub Transfer(Amount As Long, AcctNumberTo As Long, AcctNumberFrom As Long)
        
        Dim objBank As New MyCOMObject()
        
        If objBank.GetBalance(AcctNumberFrom) < Amount Then
            ' Explicitly abort the transaction.
            ContextUtil.SetAbort()
        Else
            ' Credit and Debit method explicitly vote within
            ' the code for their methods whether to commit or
            ' abort the transaction.
            objBank.Credit(Amount, AcctNumberTo)
            objBank.Debit(Amount, AcctNumberFrom)
        End If
    End Sub
End Class
      
' </Snippet1>
Public Class MyCOMObject
    Public Function GetBalance(AcctNumber As Long)
    End Function

    Public Sub Credit(Amount as Long, AcctNumber As Long)
    End Sub

    Public Sub Debit(Amount as Long, AcctNumber As Long)
    End Sub
    

End Class

Remarques

Les méthodes de service Web XML peuvent uniquement participer en tant qu’objet racine dans une transaction, en raison de la nature sans état du protocole HTTP. Les méthodes de service Web XML peuvent appeler des objets COM qui participent à la même transaction que la méthode de service Web XML, si l’objet COM est marqué pour s’exécuter dans une transaction dans l’outil d’administration des services de composants. Si une méthode de service Web XML avec une TransactionOption propriété ou RequiresNew Required appelle une autre méthode de service Web XML avec une TransactionOption propriété ou RequiresNew``Required , chaque méthode de service Web XML participe à sa propre transaction, car une méthode de service Web XML ne peut agir que comme objet racine dans une transaction.

Élément Description
Désactivé Indique que la méthode de service Web XML ne s’exécute pas dans l’étendue d’une transaction. Lorsqu’une requête est traitée, la méthode de service web XML est exécutée sans transaction.

[WebMethod(TransactionOption= TransactionOption.Disabled)]
NotSupported Indique que la méthode de service Web XML ne s’exécute pas dans l’étendue d’une transaction. Lorsqu’une requête est traitée, la méthode de service web XML est exécutée sans transaction.

[WebMethod(TransactionOption= TransactionOption.NotSupported)]
Prise en charge Indique que la méthode de service Web XML ne s’exécute pas dans l’étendue des transactions. Lorsqu’une demande est traitée, le service Web XML est créé sans transaction.

[WebMethod(TransactionOption= TransactionOption.Supported)]
Obligatoire Indique que la méthode de service Web XML nécessite une transaction. Étant donné que les méthodes de service Web XML peuvent uniquement participer en tant qu’objet racine dans une transaction, une nouvelle transaction est créée pour la méthode de service Web XML.

[WebMethod(TransactionOption= TransactionOption.Required)]
RequiresNew Indique que la méthode de service Web XML nécessite une nouvelle transaction. Lorsqu’une demande est traitée, le service Web XML est créé dans une nouvelle transaction.

[WebMethod(TransactionOption= TransactionOption.RequiresNew)]

Si une exception est levée ou non interceptée par une méthode de service Web XML, la transaction est automatiquement abandonnée. Si aucune exception ne se produit, la transaction est validée automatiquement, sauf si la méthode appelle SetAbortexplicitement .

S’applique à

Voir aussi