WebMethodAttribute.TransactionOption Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Označuje podporu transakcí metody webové služby 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
Hodnota vlastnosti
Podpora transakcí metody webové služby XML. Výchozí hodnota je Disabled.
Příklady
Následující příklad začíná novou transakci při Transfer zavolání 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
Poznámky
Metody webové služby XML se mohou účastnit pouze jako kořenový objekt v transakci, a to z důvodu bezstavové povahy protokolu HTTP. Metody webové služby XML mohou vyvolat objekty COM, které se účastní stejné transakce jako xml webová služba metoda, pokud je objekt COM označen ke spuštění v rámci transakce v nástroji pro správu Služby komponent. Pokud metoda webové služby XML s TransactionOption vlastností Required nebo RequiresNew vyvolá jinou metodu webové služby XML s TransactionOption vlastností Required nebo RequiresNew, každá metoda webové služby XML se účastní vlastní transakce, protože metoda webové služby XML může fungovat pouze jako kořenový objekt v transakci.
| Položka | Description |
|---|---|
| Disabled | Označuje, že metoda webové služby XML není spuštěna v rámci oboru transakce. Při zpracování požadavku se metoda webové služby XML spustí bez transakce. [WebMethod(TransactionOption= TransactionOption.Disabled)] |
| Nepodporováno | Označuje, že metoda webové služby XML není spuštěna v rámci oboru transakce. Při zpracování požadavku se metoda webové služby XML spustí bez transakce. [WebMethod(TransactionOption= TransactionOption.NotSupported)] |
| Podporováno | Označuje, že metoda webové služby XML není spuštěna v rozsahu transakcí. Při zpracování požadavku se webová služba XML vytvoří bez transakce. [WebMethod(TransactionOption= TransactionOption.Supported)] |
| Povinné | Označuje, že metoda webové služby XML vyžaduje transakci. Vzhledem k tomu, že metody webové služby XML mohou účastnit pouze jako kořenový objekt v transakci, bude vytvořena nová transakce pro metodu webové služby XML. [WebMethod(TransactionOption= TransactionOption.Required)] |
| VyžadujeNový | Označuje, že metoda webové služby XML vyžaduje novou transakci. Při zpracování požadavku se webová služba XML vytvoří v rámci nové transakce. [WebMethod(TransactionOption= TransactionOption.RequiresNew)] |
Pokud je vyvolána výjimka z nebo není zachycena metodou webové služby XML, transakce je automaticky přerušena. Pokud nedojde k žádným výjimkám, transakce je automaticky potvrzena, pokud metoda explicitně volá SetAbort.