Condividi tramite


Procedura: creare un metodo di servizio Web che utilizza le transazioni automatiche

Nella procedura seguente viene descritto come creare un metodo di servizio Web che utilizza le transazioni automatiche. Se si verifica un'eccezione durante la partecipazione di un metodo di servizio Web a una transazione, questa viene automaticamente interrotta da ASP.NET Viceversa, se non si verifica alcuna eccezione, viene eseguito il commit automatico della transazione.

Per creare un metodo di servizio Web che utilizza le transazioni automatiche

  1. Importare gli spazi dei nomi System.WebServices e System.EnterpriseServices. Se necessario, è possibile importare altri spazi dei nomi, ad esempio System.Data e System.Data.SqlClient.

    <%@ 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. Definire una classe che deriva dalla classe WebService. Nel codice seguente, ad esempio, viene definita una classe denominata Orders che deriva dalla classe WebService.

    Public Class Orders
       Inherits WebService
    End Class
    
    public class Orders : WebService 
    {
    }
    
  3. Per ogni metodo Web che deve partecipare automaticamente a una transazione, applicare l'attributo WebMethodAttribute, e impostare l'opzione di transazione. Nel codice seguente, ad esempio, viene applicato l'attributo WebMethod al metodo DeleteAuthor e la proprietà TransactionOption viene impostata su 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.
    }
    

Esempio

<%@ 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();
     }
}

Vedere anche

Concetti

Transazioni automatiche e servizi Web XML

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.