WebMethodAttribute.TransactionOption Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Geeft de transactieondersteuning van een XML-webservicemethode aan.
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
Waarde van eigenschap
De transactieondersteuning van een XML-webservicemethode. De standaardwaarde is Disabled.
Voorbeelden
In het onderstaande voorbeeld wordt een nieuwe transactie gestart wanneer de Transfer methode wordt aangeroepen.
// <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
Opmerkingen
XML-webservicemethoden kunnen alleen deelnemen als het hoofdobject in een transactie, vanwege de staatloze aard van het HTTP-protocol. XML-webservicemethoden kunnen COM-objecten aanroepen die deelnemen aan dezelfde transactie als de XML-webservicemethode als het COM-object is gemarkeerd om te worden uitgevoerd binnen een transactie in het beheerhulpprogramma Component Services. Als een XML-webservicemethode met een eigenschap van Required of TransactionOptionRequiresNew een andere XML-webservicemethode aanroept met een TransactionOption eigenschap van Required ofRequiresNew, neemt elke XML-webservicemethode deel aan een eigen transactie, omdat een XML-webservicemethode alleen als het hoofdobject in een transactie kan fungeren.
| Item | Description |
|---|---|
| Uitgeschakeld | Geeft aan dat de XML-webservicemethode niet wordt uitgevoerd binnen het bereik van een transactie. Wanneer een aanvraag wordt verwerkt, wordt de XML-webservicemethode uitgevoerd zonder een transactie. [WebMethod(TransactionOption= TransactionOption.Disabled)] |
| NotSupported | Geeft aan dat de XML-webservicemethode niet wordt uitgevoerd binnen het bereik van een transactie. Wanneer een aanvraag wordt verwerkt, wordt de XML-webservicemethode uitgevoerd zonder een transactie. [WebMethod(TransactionOption= TransactionOption.NotSupported)] |
| Supported | Geeft aan dat de XML-webservicemethode niet binnen het bereik van transacties wordt uitgevoerd. Wanneer een aanvraag wordt verwerkt, wordt de XML-webservice zonder transactie gemaakt. [WebMethod(TransactionOption= TransactionOption.Supported)] |
| Required | Geeft aan dat voor de XML-webservicemethode een transactie is vereist. Omdat XML-webservicemethoden alleen kunnen deelnemen als het hoofdobject in een transactie, wordt er een nieuwe transactie gemaakt voor de XML-webservicemethode. [WebMethod(TransactionOption= TransactionOption.Required)] |
| VereistNieuw | Geeft aan dat voor de XML-webservicemethode een nieuwe transactie is vereist. Wanneer een aanvraag wordt verwerkt, wordt de XML-webservice gemaakt binnen een nieuwe transactie. [WebMethod(TransactionOption= TransactionOption.RequiresNew)] |
Als er een uitzondering wordt gegenereerd van of niet wordt afgevangen door een XML-webservicemethode, wordt de transactie automatisch afgebroken. Als er geen uitzonderingen optreden, wordt de transactie automatisch doorgevoerd, tenzij de methode expliciet aanroept SetAbort.