Verfahrensweise: Erstellen einer Webdienstmethode, die automatische Transaktionen verwendet
Das folgende Verfahren beschreibt, wie eine Webdienstmethode erstellt wird, die automatische Transaktionen verwendet. Tritt während der Teilnahme einer Webdienstmethode an einer Transaktion eine Ausnahme auf, wird diese automatisch von ASP.NET abgebrochen. Ebenso wird automatisch der Commit für die Transaktion ausgeführt, wenn keine Ausnahme auftritt.
So erstellen Sie einen Webdienst, der automatische Transaktionen verwendet
Importieren Sie die Namespaces System.WebServices und System.EnterpriseServices. Andere Namespace wie System.Data und System.Data.SqlClient können nach Bedarf importiert werden.
<%@ 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;
Definieren Sie eine Klasse, die von der WebService-Klasse abgeleitet wird. Im folgenden Code wird beispielsweise eine Klasse namens "Orders" definiert, die von der WebServices-Klasse abgeleitet wird.
Public Class Orders Inherits WebService End Class
public class Orders : WebService { }
Wenden Sie für jede Webmethode, die automatisch an einer Transaktion teilnehmen muss, das WebMethodAttribute-Attribut an, und legen Sie die Transaktionsoption fest. Im folgenden Code wird beispielsweise das WebMethod-Attribut auf die
DeleteAuthor
-Methode angewendet, und die TransactionOption-Eigenschaft wird auf TransactionOption.RequiresNew festgelegt.<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. }
Beispiel
<%@ 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();
}
}
Siehe auch
Konzepte
Automatische Transaktionen und XML-Webdienste
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.