Condividi tramite


WebMethodAttribute.TransactionOption Proprietà

Definizione

Indica il supporto transazioni di un metodo di servizio Web XML.

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

Valore della proprietà

supporto transazioni di un metodo di servizio Web XML. Il valore predefinito è Disabled.

Esempio

L'esempio seguente inizia una nuova transazione quando viene chiamato il Transfer metodo.

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

Commenti

I metodi del servizio Web XML possono partecipare solo come oggetto radice in una transazione, a causa della natura senza stato del protocollo HTTP. I metodi del servizio Web XML possono richiamare gli oggetti COM che partecipano alla stessa transazione del metodo di servizio Web XML, se l'oggetto COM è contrassegnato per l'esecuzione all'interno di una transazione nello strumento di amministrazione di Servizi componenti. Se un metodo di servizio Web XML con una TransactionOption proprietà di Required o RequiresNew richiama un altro metodo di servizio Web XML con una TransactionOption proprietà di Required o RequiresNew, ogni metodo di servizio Web XML partecipa alla propria transazione, perché un metodo di servizio Web XML può agire solo come oggetto radice in una transazione.

Elemento Descrizione
Disabled Indica che il metodo del servizio Web XML non viene eseguito nell'ambito di una transazione. Quando viene elaborata una richiesta, il metodo del servizio Web XML viene eseguito senza una transazione.

[WebMethod(TransactionOption= TransactionOption.Disabled)]
NotSupported Indica che il metodo del servizio Web XML non viene eseguito nell'ambito di una transazione. Quando viene elaborata una richiesta, il metodo del servizio Web XML viene eseguito senza una transazione.

[WebMethod(TransactionOption= TransactionOption.NotSupported)]
Supportato Indica che il metodo del servizio Web XML non viene eseguito nell'ambito delle transazioni. Quando viene elaborata una richiesta, il servizio Web XML viene creato senza una transazione.

[WebMethod(TransactionOption= TransactionOption.Supported)]
Necessario Indica che il metodo del servizio Web XML richiede una transazione. Poiché i metodi del servizio Web XML possono partecipare solo come oggetto radice in una transazione, verrà creata una nuova transazione per il metodo del servizio Web XML.

[WebMethod(TransactionOption= TransactionOption.Required)]
RequiresNew Indica che il metodo del servizio Web XML richiede una nuova transazione. Quando viene elaborata una richiesta, il servizio Web XML viene creato all'interno di una nuova transazione.

[WebMethod(TransactionOption= TransactionOption.RequiresNew)]

Se viene generata un'eccezione da o meno da un metodo di servizio Web XML, la transazione viene interrotta automaticamente. Se non si verificano eccezioni, la transazione viene eseguita automaticamente a meno che il metodo non chiami SetAbortin modo esplicito .

Si applica a

Vedi anche