Compartir a través de


Cómo crear un método de servicio web que utilice transacciones automáticas

En el siguiente procedimiento se describe cómo crear un método de servicio web que utilice transacciones automáticas. Si se produce una excepción mientras un método de servicio web participa en una transacción, ASP.NET cancela automáticamente la transacción. Del mismo modo, si no se produce ninguna excepción, la transacción se confirma automáticamente.

Para crear un servicio web que utilice transacciones automáticas

  1. Importe los espacios de nombres System.WebServices y System.EnterpriseServices. Se pueden importar otros espacios de nombres, como System.Data y System.Data.SqlClient, cuando sea necesario.

    <%@ WebService Language="VB" Class="Orders" %>
    <%@ assembly name="System.EnterpriseServices" %>
    Imports System.Web.Services
    Imports System.EnterpriseServices
    
    <%@ WebService Language="C#" Class="Orders" %>
    <%@ assembly name="System.EnterpriseServices" %>
    using System.Web.Services;
    using System.EnterpriseServices;
    
  2. Defina una clase que se derive de la clase WebService. Por ejemplo, en el siguiente código se define una clase denominada Orders que se deriva de la clase WebService.

    Public Class Orders
       Inherits WebService
    End Class
    
    public class Orders : WebService 
    {
    }
    
  3. En cada método web que deba participar automáticamente en una transacción, aplique el atributo WebMethodAttribute y establezca la opción de transacción. Por ejemplo, en el siguiente código se aplica el atributo WebMethod al método DeleteAuthor y se establece la propiedad TransactionOption en TransactionOption.RequiresNew.

    <WebMethod(TransactionOption := TransactionOption.RequiresNew)> _
    Public Function DeleteAuthor(lastName As String) As Integer
         ' Perform the required database task.
    End Function
    
    [ WebMethod(TransactionOption=TransactionOption.RequiresNew)]
    public int DeleteAuthor(string lastName)  
    {
       // Perform the required database task.
    }
    

Ejemplo

<%@ WebService Language="VB" Class="Orders" %>
<%@ assembly name="System.EnterpriseServices" %>

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.Services
Imports System.Web.Util
Imports System.EnterpriseServices

Public Class Orders
   Inherits WebService
   
   <WebMethod(TransactionOption := TransactionOption.RequiresNew)> _
Public Function DeleteAuthor(lastName As String) As Integer

      Dim deleteCmd As [String] = "DELETE FROM authors2 where au_lname='" 
         & lastName & "'"
      Dim sqlConn As New SqlConnection("Integrated Security=SSPI;database=pubs;server=myserver")
      Dim myCommand As New SqlCommand(deleteCmd, sqlConn)

      ' If a Web service method is participating in a transaction and 
      ' an exception occurs, ASP.NET automatically aborts the transaction.
      ' Likewise, if no exception occurs, then the transaction is
      ' automatically committed.
      myCommand.Connection.Open()
      Return myCommand.ExecuteNonQuery()
   End Function
End Class
<%@ WebService Language="C#" Class="Orders" %>
<%@ assembly name="System.EnterpriseServices" %>

using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Services;
using System.Web.Util;
using System.EnterpriseServices;

public class Orders : WebService 
  {
     [ WebMethod(TransactionOption=TransactionOption.RequiresNew)]
     public int DeleteAuthor(string lastName)  
     {
       String deleteCmd = "DELETE FROM authors2 
          where au_lname='" + lastName + "'" ;
    
         SqlConnection sqlConn = new SqlConnection("Integrated Security=SSPI;database=pubs;server=myserver");
         SqlCommand myCommand = new SqlCommand(deleteCmd,sqlConn);

   // If a Web service method is participating in a transaction and an 
   // exception occurs, ASP.NET automatically aborts the transaction.
   // Likewise, if no exception occurs, then the transaction is
   // automatically  committed.

         myCommand.Connection.Open();
      return myCommand.ExecuteNonQuery();
     }
}

Consulte también

Conceptos

Transacciones automáticas y servicios web XML

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.