WebMethodAttribute.TransactionOption 属性

定义

指示 XML Web service 方法的事务支持。

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

属性值

TransactionOption
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

注解

由于 HTTP 协议的无状态性质,XML Web 服务方法只能作为事务中的根对象参与。 如果 COM 对象标记为在组件服务管理工具中的事务中运行,则 XML Web 服务方法可以调用参与与 XML Web 服务方法相同的事务的 COM 对象。 如果具有属性RequiredRequiresNew调用另一RequiresNew``RequiredTransactionOption个 XML Web 服务方法的属性的 XML Web 服务方法TransactionOption或属性,则每个 XML Web 服务方法都参与其自己的事务,因为 XML Web 服务方法只能充当事务中的根对象。

说明
已禁用 指示 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,否则事务会自动提交。

适用于

另请参阅