WebMethodAttribute.TransactionOption Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.