WebMethodAttribute.TransactionOption Propriedade

Definição

Indica o suporte a transações de um método de serviço 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

Valor de Propriedade

O suporte de transações de um método de serviço Web XML. A predefinição é Disabled.

Exemplos

O exemplo abaixo inicia uma nova transação quando o Transfer método é chamado.

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

Observações

Os métodos de serviço Web XML só podem participar como objeto raiz numa transação, devido à natureza sem estado do protocolo HTTP. Os métodos de serviço Web XML podem invocar objetos COM que participam na mesma transação que o método do serviço Web XML, se o objeto COM estiver marcado para ser executado numa transação na ferramenta administrativa de Serviços de Componentes. Se um método de serviço Web XML com uma TransactionOption propriedade de Required ou RequiresNew invocar outro método de serviço Web XML com a TransactionOption propriedade de Required ou RequiresNew, cada método de serviço Web XML participa na sua própria transação, porque um método de serviço Web XML só pode atuar como objeto raiz numa transação.

Item Description
Disabled Indica que o método do serviço Web XML não corre dentro do âmbito de uma transação. Quando um pedido é processado, o método do serviço Web XML é executado sem qualquer transação.

[WebMethod(TransactionOption= TransactionOption.Disabled)]
Não Suportado Indica que o método do serviço Web XML não corre dentro do âmbito de uma transação. Quando um pedido é processado, o método do serviço Web XML é executado sem qualquer transação.

[WebMethod(TransactionOption= TransactionOption.NotSupported)]
Suportado Indica que o método do serviço Web XML não corre dentro do âmbito das transações. Quando um pedido é processado, o serviço Web XML é criado sem qualquer transação.

[WebMethod(TransactionOption= TransactionOption.Supported)]
Obrigatório Indica que o método do serviço Web XML requer uma transação. Como os métodos de serviço Web XML só podem participar como objeto raiz numa transação, será criada uma nova transação para o método de serviço Web XML.

[WebMethod(TransactionOption= TransactionOption.Required)]
ExigeNovo Indica que o método do serviço Web XML requer uma nova transação. Quando um pedido é processado, o serviço Web XML é criado dentro de uma nova transação.

[WebMethod(TransactionOption= TransactionOption.RequiresNew)]

Se uma exceção for lançada ou não ser detetada por um método de serviço Web XML, a transação é automaticamente abortada. Se não ocorrerem exceções, a transação é automaticamente comprometida, a menos que o método chame SetAbortexplicitamente .

Aplica-se a

Ver também