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
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;
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 { }
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
Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.