Einfacher AJAX-DienstBasic AJAX Service

Dieses Beispiel veranschaulicht, wie Windows Communication Foundation (WCF) zu verwenden, um das Erstellen eines grundlegenden (ASP.NET Asynchronous JavaScript and XML (AJAX)-Diensts (ein Dienst, die Sie mithilfe von JavaScript-Codes über einen Webbrowserclient zugreifen können).This sample demonstrates how to use Windows Communication Foundation (WCF) to create a basic ASP.NET Asynchronous JavaScript and XML (AJAX) service (a service that you can access using JavaScript code from a Web browser client). Der Dienst nutzt das WebGetAttribute-Attribut, um sicherzustellen, dass der Dienst auf HTTP GET-Anforderungen antwortet und für die Verwendung von JSON-Daten (JavaScript Object Notation) für Antworten konfiguriert ist.The service uses the WebGetAttribute attribute to ensure that the service responds to HTTP GET requests and is configured to use the JavaScript Object Notation (JSON) data format for responses.

AJAX-Unterstützung in WCF ist optimiert für die Verwendung mit ASP.NET AJAX über das ScriptManager Steuerelement.AJAX support in WCF is optimized for use with ASP.NET AJAX through the ScriptManager control. Ein Beispiel der Verwendung von WCF mit ASP.NET AJAX finden Sie unter der AJAX-Beispielen.For an example of using WCF with ASP.NET AJAX, see the AJAX Samples.

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.The set-up procedure and build instructions for this sample are located at the end of this topic.

Im folgenden Code wird das WebGetAttribute-Attribut auf den Add-Vorgang angewandt, um sicherzustellen, dass der Dienst auf HTTP GET-Anforderungen antwortet.In the following code, the WebGetAttribute attribute is applied to the Add operation to ensure that the service responds to HTTP GET requests. Der Einfachheit halber nutzt der Code GET (Sie können eine HTTP GET-Anforderung von jedem Webbrowser aus erstellen).The code uses GET for simplicity (you can construct an HTTP GET request from any Web browser). Sie können GET auch verwenden, um Caching zu aktivieren.You can also use GET to enable caching. Bei Fehlen des WebGetAttribute-Attributs ist die Standardeinstellung HTTP POST.HTTP POST is the default in the absence of the WebGetAttribute attribute.

[ServiceContract(Namespace = "SimpleAjaxService")]
public interface ICalculator
{
    [WebGet]
    double Add(double n1, double n2);
    //Other operations omitted…
}

Die SVC-Beispieldatei verwendet WebScriptServiceHostFactory, wodurch dem Dienst ein WebScriptEndpoint-Standardendpunkt hinzugefügt wird.The sample .svc file uses WebScriptServiceHostFactory, which adds a WebScriptEndpoint standard endpoint to the service. Der Endpunkt wird an einer leeren Adresse relativ zur SVC-Datei konfiguriert.The endpoint is configured at an empty address relative to the .svc file. Dies bedeutet, dass die Adresse des Diensts http://localhost/ServiceModelSamples/service.svc, mit Ausnahme des Vorgangsnamens keine zusätzlichen Suffixe.This means that the address of the service is http://localhost/ServiceModelSamples/service.svc, with no additional suffixes other than the operation name.

<%@ServiceHost language="C#" Debug="true" Service="Microsoft.Samples.SimpleAjaxService.CalculatorService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>

Der WebScriptEndpoint ist so vorkonfiguriert, dass von einer ASP.NET AJAX-Clientseite aus auf den Dienst zugegriffen werden kann.The WebScriptEndpoint is pre-configured to make the service accessible from an ASP.NET AJAX client page. Im folgenden Abschnitt in der Datei Web.config können zusätzliche Konfigurationsänderungen am Endpunkt vorgenommen werden.The following section in Web.config can be used to make additional configuration changes to the endpoint. Wenn keine zusätzlichen Änderungen erforderlich sind, kann der Abschnitt entfernt werden.It can be removed if no extra changes are required.

<system.serviceModel>  
  <standardEndpoints>  
    <webScriptEndpoint>  
      <!-- Use this element to configure the endpoint -->  
      <standardEndpoint name=""  />  
    </webScriptEndpoint>  
  </standardEndpoints>  
</system.serviceModel>  

Der WebScriptEndpoint legt das Standarddatenformat für den Dienst auf JSON anstelle von XML fest.The WebScriptEndpoint sets the default data format for the service to JSON instead of XML. Navigieren Sie zum Aufrufen des Diensts zu http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 nach Fertigstellen des einrichten und Buildschritte weiter unten in diesem Thema.To invoke the service, navigate to http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 after completing the set up and build steps shown later in this topic. Diese Testfunktion wird durch die Verwendung einer HTTP GET-Anforderung aktiviert.This testing functionality is enabled by the use of a HTTP GET request.

Die Clientwebseite SimpleAjaxClientPage.aspx enthält ASP.NET-Code zum Aufrufen des Diensts, wenn der Benutzer auf eine der Vorgangsschaltflächen auf der Seite klickt.The client Web page SimpleAjaxClientPage.aspx contains ASP.NET code to invoke the service whenever the user clicks one of the operation buttons on the page. Das ScriptManager-Steuerelement wird verwendet, um dem Dienst durch JavaScript einen Proxy verfügbar zu machen.The ScriptManager control is used to make a proxy to the service accessible through JavaScript.

<asp:ScriptManager ID="ScriptManager" runat="server">  
    <Services>  
        <asp:ServiceReference Path="service.svc" />  
    </Services>  
</asp:ScriptManager>  

Der lokale Proxy wird instanziiert, und Vorgänge werden mit dem folgenden JavaScript-Code aufgerufen.The local proxy is instantiated and operations are invoked using the following JavaScript code.

// Code for extracting arguments n1 and n2 omitted…  
// Instantiate a service proxy  
var proxy = new SimpleAjaxService.ICalculator();  
// Code for selecting operation omitted…  
proxy.Add(parseFloat(n1), parseFloat(n2), onSuccess, onFail, null);  

Ist der Dienstaufruf erfolgreich, ruft der Code einen onSuccess-Handler auf, und das Ergebnis des Vorgangs wird in einem Textfeld angezeigt.If the service call succeeds, the code invokes the onSuccess handler and the result of the operation is displayed in a text box.

function onSuccess(mathResult){  
     document.getElementById("result").value = mathResult;  
}

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, fahren Sie mit Windows Communication Foundation (WCF) und Windows Workflow Foundation (WF) Samples for .NET Framework 4 aller Windows Communication Foundation (WCF) herunterladen und WFWF Beispiele.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Ajax\SimpleAjaxService

Siehe auchSee Also