次の方法で共有


WebMethodAttribute.TransactionOption プロパティ

定義

XML Web サービス メソッドのトランザクション サポートを示します。

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 サービス メソッドのトランザクション サポート。 既定値は、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 プロトコルのステートレスな性質により、トランザクションのルート オブジェクトとしてのみ参加できます。 XML Web サービス メソッドは、COM オブジェクトがコンポーネント サービス管理ツールのトランザクション内で実行されるようにマークされている場合、XML Web サービス メソッドと同じトランザクションに参加する COM オブジェクトを呼び出すことができます。 または のプロパティをTransactionOption持つ XML Web サービス メソッドが または のプロパティRequiresNewRequiredを持つ別の RequiredRequiresNewXML Web サービス メソッドをTransactionOption呼び出す場合、XML Web サービス メソッドはトランザクションのルート オブジェクトとしてのみ機能できるため、各 XML Web サービス メソッドは独自のトランザクションに参加します。

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 サービス メソッドから例外がスローされた場合、または XML Web サービス メソッドによってキャッチされない場合、トランザクションは自動的に中止されます。 例外が発生しない場合、メソッドが 明示的に を呼び出 SetAbortさない限り、トランザクションは自動的にコミットされます。

適用対象

こちらもご覧ください