Freigeben über


Exemplarische Vorgehensweise: Erstellen eines einfachen XML-Webdiensts mithilfe von ASP.NET

Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.

Die Entwicklung eines XML-Webdiensts mit ASP.NET beginnt mit den folgenden Schritten:

  1. Erstellen Sie eine Datei mit der Dateinamenerweiterung ASMX, und deklarieren Sie in dieser Datei mithilfe einer @ WebService-Direktive einen Webdienst.

  2. Erstellen Sie eine Klasse, die die Webdienstklasse implementiert. Die Klasse kann optional von der WebService-Klasse abgeleitet sein.

  3. Optional können Sie das WebServiceAttribute-Attribut auf die Klasse anwenden, die den Webdienst implementiert.

  4. Definieren Sie die Webdienstmethoden, die die Funktionalität des Webdiensts bilden.

Deklarieren eines Webdiensts

Beim Erstellen eines Webdiensts in ASP.NET fügen Sie die erforderliche @ WebService-Direktive am Anfang einer Textdatei mit der Dateinamenerweiterung ASMX ein. Durch die ASMX-Datei und die @ WebService-Direktive wird die URL-Adresse des Webdiensts mit seiner Implementierung in Beziehung gesetzt. Als Nächstes implementieren Sie die XML-Webdienstklasse, durch die die Methoden und Datentypen definiert werden, die für XML-Webdienstclients sichtbar sind. Schließlich fügen Sie diesen Methoden die gewünschte XML-Webdienstlogik hinzu, damit sie XML-Webanforderungen verarbeiten und Antworten zurücksenden. Die von Ihnen definierte XML-Webdienstklasse kann direkt in die ASMX-Datei oder in eine separate Datei eingefügt werden. Wenn Sie eine separate Datei verwenden, muss die Datei in eine Assembly kompiliert werden. Optional können Sie ein WebService-Attribut auf die Klasse anwenden, die den XML-Webdienst implementiert. Die Klasse, die den XML-Webdienst implementiert, kann von der WebService-Klasse abgeleitet sein.

So deklarieren Sie einen Webdienst, dessen Implementierung sich in der gleichen Datei befindet

  1. Fügen Sie am Anfang einer Datei mit der Dateinamenerweiterung ASMX eine @ WebService-Direktive ein, in der Sie die Klasse für die Implementierung des Webdiensts und die in der Implementierung verwendete Programmiersprache angeben.

    Das Class-Attribut kann auf eine Klasse festgelegt werden, die sich in derselben Assembly befindet wie die @ WebService-Direktive, oder auf eine Klasse in einer anderen Assembly. Wenn sich die Klasse in einer separaten Assembly befindet, muss sie im Verzeichnis \Bin unter der Webanwendung abgelegt werden, in der sich der XML-Webdienst befindet. Das Language-Attribut kann auf C#, VB und JS festgelegt werden. Diese Werte stehen für C#, Visual Basic .NET bzw. Jscript .NET.

    Im folgenden Codebeispiel wird das Language-Attribut der @ WebService-Direktive angegeben und das Class-Attribut auf Util** festgelegt. Diese Klasse befindet sich in derselben Datei.

    <%@ WebService Language="C#" Class="Util" %>
    
    <%@ WebService Language="VB" Class="Util" %>
    

So deklarieren Sie einen Webdienst, dessen Implementierung sich in einer Assembly befindet

  1. Fügen Sie am Anfang einer Datei mit der Erweiterung ASMX eine @ WebService-Direktive hinzu. In dieser Direktive geben Sie die Klasse für die Implementierung des Webdiensts, die Assembly, in der sich die Implementierung befindet, sowie die in der Implementierung verwendete Programmiersprache an. Wenn Sie eine separate Datei verwenden, muss die Datei in eine Assembly kompiliert werden.

    Die folgende @ WebService-Direktive ist die einzige Zeile einer Datei mit der Erweiterung ASMX. Sie gibt an, dass sich die MyName.MyWebService-Klasse in der Assembly MyAssembly im Verzeichnis \Bin der Webanwendung befindet, die als Host für den Webdienst fungiert.

    <%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
    
    <%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>
    
    7hs6sw69.note(de-de,VS.100).gifHinweis:
    Wenn Sie in der @ WebService-Direktive keine Assembly angeben, dann durchsucht ASP.NET beim ersten Zugriff auf den Webdienst die Assemblyliste im Verzeichnis \Bin der Webanwendung, die als Host für den Webdienst fungiert. Deshalb verbessern Sie die Leistung beim ersten Zugriff, wenn Sie den Assemblynamen bereitstellen.

Ableiten von der WebService-Klasse

Klassen, die einen mit ASP.NET erstellten Webdienst implementieren, können optional von der WebService-Klasse abgeleitet werden, damit sie Zugriff auf die allgemeinen ASP.NET-Objekte erhalten,z. B. Application, Session, User und Context.

So leiten Sie von der WebService-Klasse ab und greifen auf allgemeine ASP.NET-Objekte zu

<%@ WebService Language="C#" Class="Util" %>
using System;
using System.Web.Services;

public class Util: WebService 
<%@ WebService Language="VB" Class="Util" %>
Imports System
Imports System.Web.Services

Public Class Util
   Inherits WebService

Anwenden des WebService-Attributs

Wenden Sie das optionale WebService-Attribut auf eine Klasse an, die einen Webdienst implementiert, um den Standard-XML-Namespace für den Webdienst zusammen mit einer Zeichenfolge zur Beschreibung des Webdiensts festzulegen.

Es empfiehlt sich dringend, diesen Standardnamespace, der ursprünglich http://tempuri.org lautet, zu ändern, bevor der XML-Webdienst öffentlich nutzbar gemacht wird. Dies ist wichtig, weil der XML-Webdienst von anderen XML-Webdiensten unterschieden werden muss, die den Namespace möglicherweise versehentlich als Standard (<http://tempuri.org/>) verwenden.

So legen Sie den XML-Namespace fest, dem der Webdienst als Member angehört

  1. Wenden Sie ein WebService-Attribut für die Klasse, die den Webdienst implementiert an, und legen Sie hierbei die Namespace-Eigenschaft fest.

Im folgenden Codebeispiel wird der Namespace auf https://www.contoso.com/ festgelegt.

<%@ WebService Language="C#" Class="Util" Debug=true%>
using System.Web.Services;
using System;

[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService 
<%@ WebService Language="VB" Class="Util"%>
Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> _
Public Class Util
    Inherits WebService

Definieren von Webdienstmethoden

Methoden einer Klasse, die einen Webdienst implementieren, sind nicht automatisch zur Kommunikation über das Internet in der Lage. Bei Webdiensten, die mithilfe von ASP.NET erstellt wurden, kann diese Fähigkeit jedoch sehr leicht hinzugefügt werden. Zum Hinzufügen dieser Fähigkeit wenden Sie ein WebMethod-Attribut auf öffentliche Methoden an. Methoden eines Webdiensts, mit denen über das Web kommuniziert werden kann, werden als Webdienstmethoden bezeichnet.

So deklarieren Sie eine Webdienstmethode

  1. Fügen Sie der Klasse, durch die der Webdienst implementiert wird, öffentliche Methoden hinzu.

  2. Wenden Sie das WebMethod-Attribut auf die öffentlichen Methoden an, die Webdienstoperationen zugeordnet werden sollen.

Das folgende Codebeispiel enthält zwei öffentliche Methoden. Eine dieser Methoden ist eine Webdienstmethode. Die Multiply-Methode ist eine Webdienstmethode, da ein WebMethod-Attribut auf sie angewendet wurde.

<%@ WebService Language="C#" Class="Util" %>
using System.Web.Services;
using System;

[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService 
{
    [ WebMethod]    public long Multiply(int a, int b) 
    {
        return a * b;
    }
}
<%@ WebService Language="VB" Class="Util" %>

Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> 
Public Class Util 
    Inherits WebService
    < WebMethod()> _    Public Function Multiply(a As Integer, b As Integer) As Long
        Return a * b
    End Function
End Class

Siehe auch

Verweis

WebService Class
WebServiceAttribute Class
WebMethodAttribute Class

Konzepte

Grundlagen für die XML-Webdienste von ASP.NET

Weitere Ressourcen

XML-Webdienste, die ASP.NET verwenden