Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
TransactionOption Property

WebMethodAttribute.TransactionOption Property

Indicates the transaction support of an XML Web service method.

[Visual Basic]
Public Property TransactionOption As TransactionOption
[C#]
public TransactionOption TransactionOption {get; set;}
[C++]
public: __property TransactionOption get_TransactionOption();
public: __property void set_TransactionOption(TransactionOption);
[JScript]
public function get TransactionOption() : TransactionOption;
public function set TransactionOption(TransactionOption);

Property Value

The transaction support of an XML Web service method. The default is Disabled.

Remarks

XML Web service methods can only participate as the root object in a transaction, due to the stateless nature of the HTTP protocol. XML Web service methods can invoke COM objects that participate in the same transaction as the XML Web service method, if the COM object is marked to run within a transaction in the Component Services administrative tool. If an XML Web service method with a TransactionOption property of Required or RequiresNew invokes another XML Web service method with a TransactionOption property of Required or RequiresNew, each XML Web service method participates in its own transaction, because an XML Web service method can only act as the root object in a transaction.

Item Description
Disabled Indicates that the XML Web service method does not run within the scope of a transaction. When a request is processed, the XML Web service method is executed without a transaction.

[WebMethod(TransactionOption= TransactionOption.Disabled)]

NotSupported Indicates that the XML Web service method does not run within the scope of a transaction. When a request is processed, the XML Web service method is executed without a transaction.

[WebMethod(TransactionOption= TransactionOption.NotSupported)]

Supported Indicates that the XML Web service method does not run within the scope of transactions. When a request is processed, the XML Web service is created without a transaction.

[WebMethod(TransactionOption= TransactionOption.Supported)]

Required Indicates that the XML Web service method requires a transaction. Since XML Web service methods can only participate as the root object in a transaction, a new transaction will be created for the XML Web service method.

[WebMethod(TransactionOption= TransactionOption.Required)]

RequiresNew Indicates that the XML Web service method requires a new transaction. When a request is processed, the XML Web service is created within a new transaction.

[WebMethod(TransactionOption= TransactionOption.RequiresNew)]

If an exception is thrown from or not caught by an XML Web service method, the transaction is automatically aborted. If no exceptions occur the transaction is automatically committed unless the method explicitly calls SetAbort.

Example

[Visual Basic, C#] The example below begins a new transaction when the Transfer method is called.

[Visual Basic] 
<%@ 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 explictly 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
      

[C#] 
<%@ 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 explictly vote within
               // the code for their methods whether to commit or
               // abort the transaction.
               objBank.Credit(Amount, AcctNumberTo);
               objBank.Debit(Amount, AcctNumberFrom);
            }
      }
 }
      

[C++, JScript] No example is available for C++ or JScript. To view a Visual Basic or C# example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

WebMethodAttribute Class | WebMethodAttribute Members | System.Web.Services Namespace | TransactionOption

Show:
© 2015 Microsoft