WebMethodAttribute.TransactionOption Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt die Transaktionsunterstützung einer XML-Webdienstmethode an.
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
Eigenschaftswert
Die Transaktionsunterstützung einer XML-Webdienstmethode. Der Standardwert lautet Disabled.
Beispiele
Im folgenden Beispiel wird eine neue Transaktion gestartet, wenn die Transfer Methode aufgerufen wird.
// <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
Hinweise
XML-Webdienstmethoden können nur aufgrund der zustandslosen Natur des HTTP-Protokolls als Stammobjekt an einer Transaktion teilnehmen. XML-Webdienstmethoden können COM-Objekte aufrufen, die an derselben Transaktion wie die XML-Webdienstmethode teilnehmen, wenn das COM-Objekt für die Ausführung innerhalb einer Transaktion im Verwaltungstool "Component Services" markiert ist. Wenn eine XML-Webdienstmethode mit einer TransactionOption Eigenschaft oder RequiredRequiresNew einem Aufruf einer anderen XML-Webdienstmethode mit einer Eigenschaft oder Required einer anderen XML-Webdienstmethode mit einer TransactionOption Eigenschaft oder RequiresNeweiner anderen XML-Webdienstmethode an einer eigenen Transaktion teilnimmt, da eine XML-Webdienstmethode nur als Stammobjekt in einer Transaktion fungieren kann.
| Element | Beschreibung |
|---|---|
| Deaktiviert | Gibt an, dass die XML-Webdienstmethode nicht innerhalb des Gültigkeitsbereichs einer Transaktion ausgeführt wird. Wenn eine Anforderung verarbeitet wird, wird die XML-Webdienstmethode ohne Transaktion ausgeführt. [WebMethod(TransactionOption= TransactionOption.Disabled)] |
| Nicht unterstützt | Gibt an, dass die XML-Webdienstmethode nicht innerhalb des Gültigkeitsbereichs einer Transaktion ausgeführt wird. Wenn eine Anforderung verarbeitet wird, wird die XML-Webdienstmethode ohne Transaktion ausgeführt. [WebMethod(TransactionOption= TransactionOption.NotSupported)] |
| Unterstützt | Gibt an, dass die XML-Webdienstmethode nicht im Bereich der Transaktionen ausgeführt wird. Wenn eine Anforderung verarbeitet wird, wird der XML-Webdienst ohne Transaktion erstellt. [WebMethod(TransactionOption= TransactionOption.Supported)] |
| Erforderlich | Gibt an, dass für die XML-Webdienstmethode eine Transaktion erforderlich ist. Da XML-Webdienstmethoden nur als Stammobjekt in einer Transaktion teilnehmen können, wird eine neue Transaktion für die XML-Webdienstmethode erstellt. [WebMethod(TransactionOption= TransactionOption.Required)] |
| RequiresNew | Gibt an, dass für die XML-Webdienstmethode eine neue Transaktion erforderlich ist. Wenn eine Anforderung verarbeitet wird, wird der XML-Webdienst innerhalb einer neuen Transaktion erstellt. [WebMethod(TransactionOption= TransactionOption.RequiresNew)] |
Wenn eine Ausnahme von einer XML-Webdienstmethode ausgelöst oder nicht abgefangen wird, wird die Transaktion automatisch abgebrochen. Wenn keine Ausnahmen auftreten, wird die Transaktion automatisch zugesichert, es sei denn, die Methode ruft explizit auf SetAbort.