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
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;
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 { }
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.