Compartilhar via


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

Valor da propriedade

TransactionOption
TransactionOption

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

Exemplos

O exemplo a seguir 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

Comentários

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

Item Descrição
Desabilitado Indica que o método de serviço Web XML não é executado no escopo de uma transação. Quando uma solicitação é processada, o método de serviço Web XML é executado sem uma transação.

[WebMethod(TransactionOption= TransactionOption.Disabled)]
NotSupported Indica que o método de serviço Web XML não é executado no escopo de uma transação. Quando uma solicitação é processada, o método de serviço Web XML é executado sem uma transação.

[WebMethod(TransactionOption= TransactionOption.NotSupported)]
Com suporte Indica que o método de serviço Web XML não é executado no escopo das transações. Quando uma solicitação é processada, o serviço Web XML é criado sem uma transação.

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

[WebMethod(TransactionOption= TransactionOption.Required)]
Requiresnew Indica que o método de serviço Web XML requer uma nova transação. Quando uma solicitação é processada, o serviço Web XML é criado dentro de uma nova transação.

[WebMethod(TransactionOption= TransactionOption.RequiresNew)]

Se uma exceção for gerada ou não for capturada por um método de serviço Web XML, a transação será anulada automaticamente. Se nenhuma exceção ocorrer, a transação será confirmada automaticamente, a menos que o método chame SetAbortexplicitamente.

Aplica-se a

Confira também