WebMethodAttribute.TransactionOption Tulajdonság

Definíció

Egy XML-webszolgáltatás-metódus tranzakciós támogatását jelzi.

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

Tulajdonság értéke

XML-webszolgáltatás-metódus tranzakciós támogatása. Az alapértelmezett érték a Disabled.

Példák

Az alábbi példa egy új tranzakciót indít el a Transfer metódus meghívásakor.

// <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

Megjegyzések

Az XML-webszolgáltatás-metódusok csak a HTTP-protokoll állapot nélküli jellege miatt vehetnek részt a tranzakciók gyökérobjektumaként. Az XML-webszolgáltatás-metódusok meghívhatnak olyan COM-objektumokat, amelyek ugyanabban a tranzakcióban vesznek részt, mint az XML webszolgáltatás metódusa, ha a COM-objektum úgy van megjelölve, hogy egy tranzakción belül fusson a Component Services felügyeleti eszközében. Ha egy XML-webszolgáltatás-metódus tulajdonsággal rendelkezik TransactionOption vagy Required meghív egy másik XML-webszolgáltatás-metódust RequiresNew egy vagy TransactionOptiontöbb tulajdonsággalRequired, az egyes XML-webszolgáltatás-metódusok részt vesznek a saját tranzakciójában, mert az XML Web service metódusok csak a tranzakció fő objektumaként működhetnekRequiresNew.

Termék Leírás
Disabled Azt jelzi, hogy az XML webszolgáltatás metódusa nem egy tranzakció hatókörén belül fut. A kérelem feldolgozásakor a rendszer tranzakció nélkül hajtja végre az XML-webszolgáltatás metódusát.

[WebMethod(TransactionOption= TransactionOption.Disabled)]
NotSupported Azt jelzi, hogy az XML webszolgáltatás metódusa nem egy tranzakció hatókörén belül fut. A kérelem feldolgozásakor a rendszer tranzakció nélkül hajtja végre az XML-webszolgáltatás metódusát.

[WebMethod(TransactionOption= TransactionOption.NotSupported)]
Támogatott Azt jelzi, hogy az XML webszolgáltatás metódusa nem fut a tranzakciók hatókörén belül. A kérelem feldolgozásakor az XML-webszolgáltatás tranzakció nélkül jön létre.

[WebMethod(TransactionOption= TransactionOption.Supported)]
Szükséges Azt jelzi, hogy az XML-webszolgáltatás metódusa tranzakciót igényel. Mivel az XML-webszolgáltatás-metódusok csak főobjektumként vehetnek részt egy tranzakcióban, a rendszer új tranzakciót hoz létre az XML Web Service metódushoz.

[WebMethod(TransactionOption= TransactionOption.Required)]
Új szükséges Azt jelzi, hogy az XML Web Service metódushoz új tranzakcióra van szükség. A kérelem feldolgozásakor az XML-webszolgáltatás egy új tranzakción belül jön létre.

[WebMethod(TransactionOption= TransactionOption.RequiresNew)]

Ha egy XML-webszolgáltatás metódusa kivételt jelez, vagy nem, a rendszer automatikusan megszakítja a tranzakciót. Ha nem történik kivétel, a rendszer automatikusan leküldi a tranzakciót, kivéve, ha a metódus kifejezetten meghívja SetAbort.

A következőre érvényes:

Lásd még