WebMethodAttribute.TransactionOption 屬性

定義

指示 XML Web Service 方法的交易支援。

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

屬性值

XML Web Service 方法的交易支援。 預設為 Disabled

範例

下列範例會在呼叫 方法時 Transfer 開始新的交易。

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

備註

XML Web 服務方法只能參與為交易中的根物件,因為 HTTP 通訊協定的無狀態本質。 如果 COM 物件標示為在元件服務系統管理工具的交易內執行,XML Web 服務方法可以叫用參與與 XML Web 服務方法相同的交易的 COM 物件。 如果 XML Web 服務方法具有 的 屬性,或 RequiresNew 叫用另一 TransactionOptionTransactionOption XML Web 服務方法的 屬性 Required 為 或 RequiresNew ,則每個 XML Web 服務方法都會參與自己的交易,因為 XML Web 服務方法只能做為交易中的根物件。 Required

Item 描述
已停用 表示 XML Web 服務方法不會在交易的範圍內執行。 處理要求時,會執行 XML Web 服務方法,而不需交易。

[WebMethod (TransactionOption= TransactionOption.Disabled) ]
NotSupported 表示 XML Web 服務方法不會在交易的範圍內執行。 處理要求時,會執行 XML Web 服務方法,而不需交易。

[WebMethod (TransactionOption= TransactionOption.NotSupported) ]
支援 表示 XML Web 服務方法不會在交易範圍內執行。 處理要求時,會建立 XML Web 服務,而不需交易。

[WebMethod (TransactionOption= TransactionOption.Supported) ]
必要 表示 XML Web 服務方法需要交易。 由於 XML Web 服務方法只能參與為交易中的根物件,因此將會為 XML Web 服務方法建立新的交易。

[WebMethod (TransactionOption= TransactionOption.Required) ]
RequiresNew 表示 XML Web 服務方法需要新的交易。 處理要求時,XML Web 服務會在新的交易內建立。

[WebMethod (TransactionOption= TransactionOption.RequiresNew) ]

如果從 XML Web 服務方法擲回或未攔截到例外狀況,則交易會自動中止。 如果沒有發生例外狀況,除非 方法明確呼叫 SetAbort ,否則交易會自動認可。

適用於

另請參閱