WebMethodAttribute.TransactionOption Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger transaktionsstöd för en XML-webbtjänstmetod.
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
Egenskapsvärde
Transaktionsstöd för en XML-webbtjänstmetod. Standardvärdet är Disabled.
Exempel
Exemplet nedan börjar en ny transaktion när Transfer metoden anropas.
// <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
Kommentarer
XML-webbtjänstmetoder kan bara delta som rotobjekt i en transaktion på grund av HTTP-protokollets tillståndslösa karaktär. XML-webbtjänstmetoder kan anropa COM-objekt som deltar i samma transaktion som XML-webbtjänstmetoden, om COM-objektet har markerats för att köras inom en transaktion i administrationsverktyget för Komponenttjänster. Om en XML-webbtjänstmetod med en TransactionOption egenskap för Required eller RequiresNew anropar en annan XML-webbtjänstmetod med egenskapen TransactionOptionRequired eller RequiresNew, deltar varje XML-webbtjänstmetod i en egen transaktion, eftersom en XML-webbtjänstmetod bara kan fungera som rotobjekt i en transaktion.
| Objekt | Description |
|---|---|
| Disabled | Anger att XML-webbtjänstmetoden inte körs inom omfånget för en transaktion. När en begäran bearbetas körs XML-webbtjänstmetoden utan en transaktion. [WebMethod(TransactionOption= TransactionOption.Disabled)] |
| NotSupported | Anger att XML-webbtjänstmetoden inte körs inom omfånget för en transaktion. När en begäran bearbetas körs XML-webbtjänstmetoden utan en transaktion. [WebMethod(TransactionOption= TransactionOption.NotSupported)] |
| Stöds | Anger att XML-webbtjänstmetoden inte körs inom transaktionsomfånget. När en begäran bearbetas skapas XML-webbtjänsten utan en transaktion. [WebMethod(TransactionOption= TransactionOption.Supported)] |
| Obligatoriskt | Anger att XML-webbtjänstmetoden kräver en transaktion. Eftersom XML-webbtjänstmetoder endast kan delta som rotobjekt i en transaktion skapas en ny transaktion för XML-webbtjänstmetoden. [WebMethod(TransactionOption= TransactionOption.Required)] |
| KräverNy | Anger att XML-webbtjänstmetoden kräver en ny transaktion. När en begäran bearbetas skapas XML-webbtjänsten i en ny transaktion. [WebMethod(TransactionOption= TransactionOption.RequiresNew)] |
Om ett undantag genereras från eller inte fångas av en XML-webbtjänstmetod avbryts transaktionen automatiskt. Om inga undantag inträffar checkas transaktionen in automatiskt såvida inte metoden uttryckligen anropar SetAbort.