Freigeben über


Vorgehensweise: Erstellen eines AJAX-aktivierten WCF-Diensts und eines ASP.NET-Clients, der auf den Dienst zugreift

In diesem Thema wird gezeigt, wie Sie mithilfe von Visual Studio einen AJAX-fähigen Windows Communication Foundation (WCF)-Dienst und einen ASP.NET-Client erstellen, der auf den Dienst zugreift.

Erstellen einer ASP.NET-Web-App

  1. Öffnen Sie Visual Studio.

  2. Wählen Sie im Menü Datei nacheinander Neu>Projekt aus.

  3. Erweitern Sie im Dialogfeld Neues Projekt die Kategorie Installiert>Visual C#>Web, und wählen Sie ASP.NET-Webanwendung (.NET Framework) aus.

  4. Nennen Sie das Projekt SandwichServices, und klicken Sie auf OK.

  5. Wählen Sie im Dialogfeld Neue ASP.NET-Webanwendung die Option Leer und dann OK aus.

    ASP.NET web app type dialog in Visual Studio

Hinzufügen eines Webformulars

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt „SandwichServices“, und wählen Sie Hinzufügen>Neues Element aus.

  2. Erweitern Sie im Dialogfeld Neues Element hinzufügen die Kategorie Installiert>Visual C#>Web, und wählen Sie die Vorlage Webformular aus.

  3. Übernehmen Sie den Standardnamen (WebForm1), und wählen Sie Hinzufügen aus.

    WebForm1.aspx wird in der Ansicht Quelle geöffnet.

  4. Fügen Sie das folgende Markup innerhalb der <body>-Tags hinzu:

    <input type="button" value="Price of 3 sandwiches" onclick="Calculate()"/>
    <br />
    <span id="additionResult"></span>
    

Erstellen eines AJAX-fähigen WCF-Diensts

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt „SandwichServices“, und wählen Sie Hinzufügen>Neues Element aus.

  2. Erweitern Sie im Dialogfeld Neues Element hinzufügen die Kategorie Installiert>Visual C#>Web, und wählen Sie die Vorlage WCF-Dienst (AJAX-fähig) aus.

    WCF Service (AJAX-enabled) item template in Visual Studio

  3. Nennen Sie den Dienst CostService, und wählen Sie Hinzufügen aus.

    CostService.svc.cs wird im Editor geöffnet.

  4. Implementieren Sie den Vorgang im Dienst. Fügen Sie der Klasse „CostService“ die folgende Methode zum Berechnen der Kosten für eine Menge von Sandwiches hinzu:

    [OperationContract]
    public double CostOfSandwiches(int quantity)
    {
        return 1.25 * quantity;
    }
    

Konfigurieren des Clients zum Zugriff auf den Dienst

  1. Öffnen Sie die Datei WebForm1.aspx, und wählen Sie die Ansicht Entwurf aus.

  2. Wählen Sie im Menü Ansicht die Option Toolbox aus.

  3. Erweitern Sie den Knoten AJAX-Erweiterungen, und verschieben Sie einen ScriptManager per Drag & Drop auf das Formular.

  4. Fügen Sie in der Ansicht Quelle den folgenden Code zwischen den <ScriptManager>-Tags hinzu, um den Pfad zum WCF-Dienst anzugeben:

    <Services>
       <asp:ServiceReference Path="~/CostService.svc" />
    </Services>
    
  5. Fügen Sie den Code für die JavaScript-Funktion Calculate() hinzu. Fügen Sie den folgenden Code im Abschnitt head des Webformulars ein:

    <script type="text/javascript">
    
        function Calculate() {
            CostService.CostOfSandwiches(3, onSuccess);
        }
    
        function onSuccess(result) {
            var myres = $get("additionResult");
            myres.innerHTML = result;
        }
    
    </script>
    

    Dieser Code ruft die Methode „CostService“ auf, um den Preis für drei Sandwiches zu berechnen, und zeigt dann das Ergebnis im Bereich additionResult an.

Ausführen des Programms

Stellen Sie sicher, dass WebForm1.aspx den Fokus hat, und drücken Sie dann die Schaltfläche Start zum Starten des Webclients. Die Schaltfläche ist durch ein grünes Dreieck gekennzeichnet und lautet etwa IIS Express (Microsoft Edge). Alternativ können Sie F5 drücken. Klicken Sie auf die Schaltfläche Price of 3 sandwiches (Preis für 3 Sandwiches), um die erwartete Ausgabe „3,75“ zu generieren.

Beispiel

Im Folgenden wird der vollständige Code in der Datei CostService.svc.cs gezeigt:

using System.ServiceModel;
using System.ServiceModel.Activation;

namespace SandwichServices
{
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class CostService
    {
        [OperationContract]
        public double CostOfSandwiches(int quantity)
        {
            return 1.25 * quantity;
        }
    }
}

Im Folgenden wird der vollständige Inhalt der Seite WebForm1.aspx gezeigt:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="SandwichServices.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">

        function Calculate() {
            CostService.CostOfSandwiches(3, onSuccess);
        }

        function onSuccess(result) {
            var myres = $get("additionResult");
            myres.innerHTML = result;
        }

    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
        </div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
            <Services>
                <asp:ServiceReference Path="~/CostService.svc" />
            </Services>
        </asp:ScriptManager>

        <input type="button" value="Price of 3 sandwiches" onclick="Calculate()" />
        <br />
        <span id="additionResult"></span>
    </form>
</body>
</html>