WebMethodAttribute.TransactionOption Właściwość

Definicja

Wskazuje obsługę transakcji metody usługi sieci 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

Wartość właściwości

TransactionOption
TransactionOption

Obsługa transakcji metody usługi sieci Web XML. Wartość domyślna to Disabled.

Przykłady

W poniższym przykładzie rozpoczyna się nowa transakcja po wywołaniu Transfer metody.

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

Uwagi

Metody usługi sieci Web XML mogą uczestniczyć tylko jako obiekt główny w transakcji ze względu na bezstanowy charakter protokołu HTTP. Metody usługi sieci Web XML mogą wywoływać obiekty COM, które uczestniczą w tej samej transakcji co metoda usługi sieci Web XML, jeśli obiekt COM jest oznaczony do uruchomienia w ramach transakcji w narzędziu administracyjnym usługi składników. Jeśli metoda usługi sieci Web XML z właściwością TransactionOption Required lub RequiresNew wywołuje inną metodę usługi sieci Web XML z właściwością Required TransactionOption lub RequiresNew, każda metoda usługi sieci Web XML uczestniczy we własnej transakcji, ponieważ metoda usługi sieci Web XML może działać tylko jako obiekt główny w transakcji.

Element Opis
Disabled Wskazuje, że metoda usługi sieci Web XML nie jest uruchamiana w zakresie transakcji. Po przetworzeniu żądania metoda usługi sieci Web XML jest wykonywana bez transakcji.

[WebMethod(TransactionOption= TransactionOption.Disabled)]
Notsupported Wskazuje, że metoda usługi sieci Web XML nie jest uruchamiana w zakresie transakcji. Po przetworzeniu żądania metoda usługi sieci Web XML jest wykonywana bez transakcji.

[WebMethod(TransactionOption= TransactionOption.NotSupported)]
Obsługiwane Wskazuje, że metoda usługi sieci Web XML nie jest uruchamiana w zakresie transakcji. Po przetworzeniu żądania usługa sieci Web XML jest tworzona bez transakcji.

[WebMethod(TransactionOption= TransactionOption.Supported)]
Wymagane Wskazuje, że metoda usługi sieci Web XML wymaga transakcji. Ponieważ metody usługi sieci Web XML mogą uczestniczyć tylko jako obiekt główny w transakcji, zostanie utworzona nowa transakcja dla metody usługi sieci Web XML.

[WebMethod(TransactionOption= TransactionOption.Required)]
WymagaNowy Wskazuje, że metoda usługi sieci Web XML wymaga nowej transakcji. Po przetworzeniu żądania usługa sieci Web XML jest tworzona w ramach nowej transakcji.

[WebMethod(TransactionOption= TransactionOption.RequiresNew)]

Jeśli wyjątek zostanie zgłoszony z metody usługi sieci Web XML lub nie zostanie przechwycony, transakcja zostanie automatycznie przerwana. Jeśli nie wystąpią wyjątki, transakcja zostanie zatwierdzona automatycznie, chyba że metoda jawnie wywołuje SetAbortmetodę .

Dotyczy

Zobacz też