Freigeben über


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

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

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.