WebMethodAttribute.TransactionOption Propriedade

Definição

Indica o suporte a transações de um método de serviço Web XML.Indicates the transaction support of an XML Web service method.

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.The transaction support of an XML Web service method. O padrão é Disabled.The default is Disabled.

Exemplos

O exemplo a seguir inicia uma nova transação quando o Transfer método é chamado.The example below begins a new transaction when the Transfer method is called.

// <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.XML Web service methods can only participate as the root object in a transaction, due to the stateless nature of the HTTP protocol. 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 em uma transação na ferramenta administrativa serviços de componentes.XML Web service methods can invoke COM objects that participate in the same transaction as the XML Web service method, if the COM object is marked to run within a transaction in the Component Services administrative tool. Se um método de Web Service XML com uma TransactionOption propriedade Required ou RequiresNew invocar outro método de Web Service XML com uma TransactionOption propriedade de Required ou RequiresNew , cada método de Web Service XML participará em sua própria transação, porque um método de serviço Web XML só pode atuar como o objeto raiz em uma transação.If an XML Web service method with a TransactionOption property of Required or RequiresNew invokes another XML Web service method with a TransactionOption property of Required or RequiresNew, each XML Web service method participates in its own transaction, because an XML Web service method can only act as the root object in a transaction.

ItemItem DescriçãoDescription
DesabilitadoDisabled Indica que o método de serviço Web XML não é executado dentro do escopo de uma transação.Indicates that the XML Web service method does not run within the scope of a transaction. Quando uma solicitação é processada, o método de serviço Web XML é executado sem uma transação.When a request is processed, the XML Web service method is executed without a transaction.

[WebMethod (TransactionOption = TransactionOption.Disabled )][WebMethod(TransactionOption= TransactionOption.Disabled)]
NotSupportedNotSupported Indica que o método de serviço Web XML não é executado dentro do escopo de uma transação.Indicates that the XML Web service method does not run within the scope of a transaction. Quando uma solicitação é processada, o método de serviço Web XML é executado sem uma transação.When a request is processed, the XML Web service method is executed without a transaction.

[WebMethod (TransactionOption = TransactionOption.NotSupported )][WebMethod(TransactionOption= TransactionOption.NotSupported)]
Com suporteSupported Indica que o método de serviço Web XML não é executado dentro do escopo de transações.Indicates that the XML Web service method does not run within the scope of transactions. Quando uma solicitação é processada, o serviço Web XML é criado sem uma transação.When a request is processed, the XML Web service is created without a transaction.

[WebMethod (TransactionOption = TransactionOption.Supported )][WebMethod(TransactionOption= TransactionOption.Supported)]
ObrigatórioRequired Indica que o método de serviço Web XML requer uma transação.Indicates that the XML Web service method requires a transaction. 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.Since XML Web service methods can only participate as the root object in a transaction, a new transaction will be created for the XML Web service method.

[WebMethod (TransactionOption = TransactionOption.Required )][WebMethod(TransactionOption= TransactionOption.Required)]
RequiresNewRequiresNew Indica que o método de serviço Web XML requer uma nova transação.Indicates that the XML Web service method requires a new transaction. Quando uma solicitação é processada, o serviço Web XML é criado em uma nova transação.When a request is processed, the XML Web service is created within a new transaction.

[WebMethod (TransactionOption = TransactionOption.RequiresNew )][WebMethod(TransactionOption= TransactionOption.RequiresNew)]

Se uma exceção for lançada ou não for detectada por um método de serviço Web XML, a transação será abortada automaticamente.If an exception is thrown from or not caught by an XML Web service method, the transaction is automatically aborted. Se nenhuma exceção ocorrer, a transação será confirmada automaticamente, a menos que o método chame explicitamente SetAbort .If no exceptions occur the transaction is automatically committed unless the method explicitly calls SetAbort.

Aplica-se a

Confira também