Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Windows Communication Foundation (WCF) AJAX-tjänster kan nås från valfri JavaScript-aktiverad webbsida, utan ASP.NET AJAX. I det här avsnittet beskrivs hur du skapar en sådan WCF-tjänst.
Anvisningar om hur du använder WCF med ASP.NET AJAX finns i Skapa WCF-tjänster för ASP.NET AJAX.
Det finns tre delar i en skapande av en WCF AJAX-tjänst:
Skapa en AJAX-slutpunkt som kan nås från webbläsaren.
Skapa ett AJAX-kompatibelt tjänstkontrakt.
Åtkomst till WCF AJAX-tjänster.
Skapa en AJAX-slutpunkt
Det mest grundläggande sättet att aktivera AJAX-stöd i en WCF-tjänst är att använda WebServiceHostFactory i .svc-filen som är associerad med tjänsten, som i följande exempel.
<%ServiceHost
language=c#
Debug="true"
Service="Microsoft.Ajax.Samples.CityService"
Factory=System.ServiceModel.Activation.WebServiceHostFactory
%>
Du kan också använda konfigurationen för att lägga till en AJAX-slutpunkt. Använd WebHttpBinding på tjänstslutpunkten och konfigurera den slutpunkten med WebHttpBehavior som visas i kodexemplet nedan.
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="AjaxBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="Microsoft.Ajax.Samples.CityService">
<endpoint
address="ajaxEndpoint"
behaviorConfiguration="AjaxBehavior"
binding="webHttpBinding"
contract="Microsoft.Ajax.Samples.ICityService" />
</service>
</services>
</system.serviceModel>
</configuration>
Ett fungerande exempel finns i AJAX-tjänsten med JSON och XML.
Skapa ett AJAX-Compatible servicekontrakt
Som standard returnerar tjänstkontrakt som exponeras via en AJAX-slutpunkt data i XML-format. Dessutom är tjänståtgärder som standard tillgängliga via HTTP POST-begäranden till URL:er som innehåller slutpunktsadressen följt av åtgärdsnamnet, som visas i följande exempel.
[OperationContract]
string[] GetCities(string firstLetters);
Den här åtgärden är tillgänglig med hjälp av ett HTTP POST till http://serviceaddress/endpointaddress/GetCities och returnerar ett XML-meddelande.
Du kan använda den fullständiga webbprogrammeringsmodellen för att anpassa dessa grundläggande aspekter. Du kan till exempel använda attributen WebGetAttribute eller WebInvokeAttribute för att styra HTTP-verbet som åtgärden svarar på eller använda UriTemplate egenskapen för dessa respektive attribut för att ange anpassade URI:er. Mer information finns i avsnittet WCF Web HTTP Programming Model.
JSON-dataformatet används ofta i AJAX-tjänster. Om du vill skapa en åtgärd som returnerar JSON i stället för XML anger du ResponseFormat egenskapen (eller ResponseFormat) till Json. Avsnittet Stand-Alone JSON-serialisering visar hur inbyggda .NET-typer och datakontraktstyper mappas till JSON.
Normalt består JSON-begäranden och -svar av bara ett objekt. För den föregående GetCities åtgärden liknar begäran följande uttalande.
"na"
Svaret på den begäran liknar följande instruktion.
["Nairobi", "Naples", "Nashville"]
Om åtgärden tar en extra parameter måste begärandestilen anpassas för att omsluta båda parametrarna i ett enda JSON-objekt. Ett exempel på den här stilen av JSON-meddelande finns i följande.
{"firstLetters": "na", "maxNumber": 2}
Följande kontrakt godkänner det här meddelandet.
[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)]
[OperationContract]
string[] GetCities(string firstLetters, int maxNumber);
Åtkomst till AJAX-tjänster
WCF AJAX-slutpunkter accepterar alltid både JSON- och XML-begäranden.
HTTP POST-begäranden med innehållstypen "application/json" behandlas som JSON och de med innehållstyp som anger XML (till exempel "text/xml") behandlas som XML.
HTTP GET-begäranden innehåller alla begärandeparametrar i själva URL:en.
Det är upp till användaren att bestämma hur http-begäran ska skapas till slutpunkten. Användaren har också fullständig kontroll över att konstruera den JSON som utgör brödtexten i begäran. Ett exempel på hur du skapar en begäran från JavaScript finns i AJAX-tjänsten med JSON och XML.