WebMethodAttribute.TransactionOption 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
XML Web services 메서드의 트랜잭션 지원을 나타냅니다.
public:
property System::EnterpriseServices::TransactionOption TransactionOption { System::EnterpriseServices::TransactionOption get(); void set(System::EnterpriseServices::TransactionOption value); };
public:
property System::Web::Services::TransactionOption TransactionOption { System::Web::Services::TransactionOption get(); void set(System::Web::Services::TransactionOption value); };
public System.EnterpriseServices.TransactionOption TransactionOption { get; set; }
public System.Web.Services.TransactionOption TransactionOption { get; set; }
member this.TransactionOption : System.EnterpriseServices.TransactionOption with get, set
member this.TransactionOption : System.Web.Services.TransactionOption with get, set
Public Property TransactionOption As TransactionOption
속성 값
XML Web services 메서드의 트랜잭션 지원입니다. 기본값은 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 웹 서비스 메서드는 HTTP 프로토콜의 상태 비속어 특성으로 인해 트랜잭션의 루트 개체로만 참여할 수 있습니다. COM 개체가 Component Services 관리 도구의 트랜잭션 내에서 실행되도록 표시된 경우 XML 웹 서비스 메서드는 XML 웹 서비스 메서드와 동일한 트랜잭션에 참여하는 COM 개체를 호출할 수 있습니다. 속성이 있는 TransactionOption XML Web services 메서드가 다른 XML Web services 메서드의 속성을 사용 TransactionOption 하거나 RequiresNew``RequiresNew
호출하는 경우 XML 웹 서비스 메서드는 트랜잭션의 Required
루트 개체로만 작동할 수 있으므로 각 XML 웹 서비스 메서드가 자체 트랜잭션에 참여 Required
합니다.
항목 | 설명 |
---|---|
사용 안 함 | XML 웹 서비스 메서드가 트랜잭션 범위 내에서 실행되지 않음을 나타냅니다. 요청이 처리되면 XML 웹 서비스 메서드가 트랜잭션 없이 실행됩니다. [WebMethod(TransactionOption= TransactionOption.Disabled )] |
NotSupported | XML 웹 서비스 메서드가 트랜잭션 범위 내에서 실행되지 않음을 나타냅니다. 요청이 처리되면 XML 웹 서비스 메서드가 트랜잭션 없이 실행됩니다. [WebMethod(TransactionOption= TransactionOption.NotSupported )] |
지원됨 | XML 웹 서비스 메서드가 트랜잭션 범위 내에서 실행되지 않음을 나타냅니다. 요청이 처리되면 XML 웹 서비스가 트랜잭션 없이 만들어집니다. [WebMethod(TransactionOption= TransactionOption.Supported )] |
필수 | XML 웹 서비스 메서드에 트랜잭션이 필요 했음을 나타냅니다. XML 웹 서비스 메서드는 트랜잭션의 루트 개체로만 참여할 수 있으므로 XML 웹 서비스 메서드에 대한 새 트랜잭션이 만들어집니다. [WebMethod(TransactionOption= TransactionOption.Required )] |
RequiresNew | XML 웹 서비스 메서드에 새 트랜잭션이 필요 했음을 나타냅니다. 요청이 처리되면 XML 웹 서비스가 새 트랜잭션 내에 만들어집니다. [WebMethod(TransactionOption= TransactionOption.RequiresNew )] |
XML 웹 서비스 메서드에서 예외가 throw되거나 catch되지 않으면 트랜잭션이 자동으로 중단됩니다. 예외가 발생하지 않으면 메서드가 명시적으로 호출 SetAbort
하지 않는 한 트랜잭션이 자동으로 커밋됩니다.