Dela via


Grundläggande AJAX-tjänst

SimpleAjaxService-exemplet visar hur du använder Windows Communication Foundation (WCF) för att skapa en grundläggande ASP.NET Asynkron JavaScript- och XML-tjänst (AJAX) (en tjänst som du kan komma åt med hjälp av JavaScript-kod från en webbläsarklient). Tjänsten använder WebGetAttribute attributet för att säkerställa att tjänsten svarar på HTTP GET-begäranden och är konfigurerad för att använda JSON-dataformatet (JavaScript Object Notation) för svar.

AJAX-stöd i WCF är optimerat för användning med ASP.NET AJAX via ScriptManager kontrollen. Ett exempel på hur du använder WCF med ASP.NET AJAX finns i AJAX-exempel.

Kommentar

Konfigurationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.

I följande kod WebGetAttribute tillämpas attributet på Add åtgärden för att säkerställa att tjänsten svarar på HTTP GET-begäranden. Koden använder GET för enkelhetens skull (du kan skapa en HTTP GET-begäran från valfri webbläsare). Du kan också använda GET för att aktivera cachelagring. HTTP POST är standard i avsaknad av attributet WebGetAttribute .

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

Exempelfilen .svc använder WebScriptServiceHostFactory, vilket lägger till en WebScriptEndpoint standardslutpunkt i tjänsten. Slutpunkten konfigureras på en tom adress i förhållande till .svc-filen. Det innebär att adressen för tjänsten är http://localhost/ServiceModelSamples/service.svc, utan några andra suffix än åtgärdsnamnet.

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

WebScriptEndpoint Är förkonfigurerad för att göra tjänsten tillgänglig från en ASP.NET AJAX-klientsida. Följande avsnitt i Web.config kan användas för att göra ytterligare konfigurationsändringar i slutpunkten. Det kan tas bort om inga extra ändringar krävs.

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

WebScriptEndpoint Anger standarddataformatet för tjänsten till JSON i stället för XML. Om du vill anropa tjänsten går du till http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 när du har slutfört konfigurations- och byggstegen som visas senare i det här avsnittet. Den här testfunktionen aktiveras med hjälp av en HTTP GET-begäran.

Klientwebbsidan SimpleAjaxClientPage.aspx innehåller ASP.NET kod för att anropa tjänsten när användaren klickar på någon av åtgärdsknapparna på sidan. Kontrollen ScriptManager används för att göra en proxy till tjänsten tillgänglig via JavaScript.

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

Den lokala proxyn instansieras och åtgärder anropas med hjälp av följande JavaScript-kod.

// 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);

Om tjänstanropet lyckas anropar onSuccess koden hanteraren och resultatet av åtgärden visas i en textruta.

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