WebMethodAttribute.TransactionOption プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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 サービス メソッドが または のプロパティRequiresNew
Required
を持つ別の Required
RequiresNew
XML 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
さない限り、トランザクションは自動的にコミットされます。
適用対象
こちらもご覧ください
.NET