Bagikan melalui


WebMethodAttribute.TransactionOption Properti

Definisi

Menunjukkan dukungan transaksi metode layanan 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

Nilai Properti

Dukungan transaksi metode layanan Web XML. Defaultnya adalah Disabled.

Contoh

Contoh di bawah ini memulai transaksi baru ketika metode dipanggil Transfer .

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

Keterangan

Metode layanan Web XML hanya dapat berpartisipasi sebagai objek akar dalam transaksi, karena sifat protokol HTTP tanpa status. Metode layanan Web XML dapat memanggil objek COM yang berpartisipasi dalam transaksi yang sama dengan metode layanan Web XML, jika objek COM ditandai untuk dijalankan dalam transaksi di alat administratif Layanan Komponen. Jika metode layanan Web XML dengan TransactionOption properti Required atau RequiresNew memanggil metode layanan Web XML lain dengan TransactionOption properti Required atau RequiresNew, setiap metode layanan Web XML berpartisipasi dalam transaksinya sendiri, karena metode layanan Web XML hanya dapat bertindak sebagai objek akar dalam transaksi.

Item Deskripsi
Nonaktif Menunjukkan bahwa metode layanan Web XML tidak berjalan dalam cakupan transaksi. Saat permintaan diproses, metode layanan Web XML dijalankan tanpa transaksi.

[WebMethod(TransactionOption= TransactionOption.Disabled)]
Tidak didukung Menunjukkan bahwa metode layanan Web XML tidak berjalan dalam cakupan transaksi. Saat permintaan diproses, metode layanan Web XML dijalankan tanpa transaksi.

[WebMethod(TransactionOption= TransactionOption.NotSupported)]
Dukungan Menunjukkan bahwa metode layanan Web XML tidak berjalan dalam cakupan transaksi. Saat permintaan diproses, layanan Web XML dibuat tanpa transaksi.

[WebMethod(TransactionOption= TransactionOption.Supported)]
Required Menunjukkan bahwa metode layanan Web XML memerlukan transaksi. Karena metode layanan Web XML hanya dapat berpartisipasi sebagai objek akar dalam transaksi, transaksi baru akan dibuat untuk metode layanan Web XML.

[WebMethod(TransactionOption= TransactionOption.Required)]
MembutuhkanBaru Menunjukkan bahwa metode layanan Web XML memerlukan transaksi baru. Saat permintaan diproses, layanan Web XML dibuat dalam transaksi baru.

[WebMethod(TransactionOption= TransactionOption.RequiresNew)]

Jika pengecualian dilemparkan dari atau tidak ditangkap oleh metode layanan Web XML, transaksi akan dibatalkan secara otomatis. Jika tidak ada pengecualian yang terjadi, transaksi secara otomatis dilakukan kecuali metode secara eksplisit memanggil SetAbort.

Berlaku untuk

Lihat juga