Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Auf AJAX-Dienste (Windows Communication Foundation, WCF) kann über jede JavaScript-fähige Webseite zugegriffen werden, ohne dass ASP.NET AJAX erforderlich ist. In diesem Thema wird beschrieben, wie Ein solcher WCF-Dienst erstellt wird.
Anweisungen zur Verwendung von WCF mit ASP.NET AJAX finden Sie unter Creating WCF Services for ASP.NET AJAX.
Es gibt drei Teile für die Erstellung eines WCF AJAX-Diensts:
Erstellen eines AJAX-Endpunkts, auf den über den Browser zugegriffen werden kann.
Erstellen eines AJAX-kompatiblen Dienstvertrags.
Zugreifen auf WCF AJAX-Dienste.
Erstellen eines AJAX-Endpunkts
Die einfachste Möglichkeit zum Aktivieren der AJAX-Unterstützung in einem WCF-Dienst besteht darin, die WebServiceHostFactory dem Dienst zugeordnete SVC-Datei zu verwenden, wie im folgenden Beispiel.
<%ServiceHost
language=c#
Debug="true"
Service="Microsoft.Ajax.Samples.CityService"
Factory=System.ServiceModel.Activation.WebServiceHostFactory
%>
Alternativ können Sie auch die Konfiguration verwenden, um einen AJAX-Endpunkt hinzuzufügen. Verwenden Sie die WebHttpBinding des Dienstendpunkts, und konfigurieren Sie diesen Endpunkt mit dem WebHttpBehavior, wie im folgenden Codeausschnitt dargestellt.
<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>
Ein funktionierendes Beispiel finden Sie im AJAX-Dienst mit JSON und XML.
Erstellen eines AJAX-Compatible-Servicevertrags
Standardmäßig werden Dienstverträge, die über einen AJAX-Endpunkt verfügbar gemacht werden, Daten im XML-Format zurückgeben. Standardmäßig sind Dienstvorgänge über HTTP POST-Anforderungen auf URLs zugänglich, die die Endpunktadresse und den folgenden Vorgangsnamen enthalten, wie in folgendem Beispiel gezeigt wird.
[OperationContract]
string[] GetCities(string firstLetters);
Auf diesen Vorgang kann über einen HTTP-POST auf http://serviceaddress/endpointaddress/GetCities zugegriffen werden, und es wird eine XML-Nachricht zurückgegeben.
Sie können das vollständige Webprogrammiermodell verwenden, um diese grundlegenden Aspekte anzupassen. Sie können z. B. die WebGetAttributeWebInvokeAttribute Attribute verwenden, um das HTTP-Verb zu steuern, auf das der Vorgang antwortet, oder die UriTemplate Eigenschaft dieser jeweiligen Attribute verwenden, um benutzerdefinierte URIs anzugeben. Weitere Informationen finden Sie im Thema zum WCF-Web-HTTP-Programmiermodell .
Das JSON-Datenformat wird häufig in AJAX-Diensten verwendet. Um einen Vorgang zu erstellen, der JSON anstelle von XML zurückgibt, legen Sie die ResponseFormat (oder die ResponseFormat) -Eigenschaft auf Json. Im ThemaStand-Alone JSON-Serialisierung wird gezeigt, wie eingebettete .NET-Typen und Datentypen der Datenverträge auf JSON abgebildet werden.
Normalerweise bestehen JSON-Anforderungen und -Antworten aus nur einem Element. Für den vorherigen GetCities Vorgang ähnelt die Anforderung der folgenden Anweisung.
"na"
Die Antwort auf diese Anfrage gleicht der folgenden Aussage.
["Nairobi", "Naples", "Nashville"]
Wenn der Vorgang einen zusätzlichen Parameter verwendet, muss der Anforderungsstil umschlossen werden, um beide Parameter in einem einzelnen JSON-Objekt umzuschließen. Ein Beispiel für diese Art von JSON-Nachricht ist im folgenden Abschnitt zu sehen.
{"firstLetters": "na", "maxNumber": 2}
Der folgende Vertrag akzeptiert diese Nachricht.
[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)]
[OperationContract]
string[] GetCities(string firstLetters, int maxNumber);
Zugreifen auf AJAX-Dienste
WCF AJAX-Endpunkte akzeptieren immer JSON- und XML-Anforderungen.
HTTP POST-Anforderungen mit einem Inhaltstyp von "application/json" werden als JSON behandelt, und diejenigen mit Inhaltstyp, die XML angeben (z. B. "text/xml") werden als XML behandelt.
HTTP GET-Anforderungen enthalten alle Anforderungsparameter in der URL selbst.
Der Benutzer muss entscheiden, wie die HTTP-Anforderung an den Endpunkt erstellt wird. Außerdem hat der Benutzer die vollständige Kontrolle über das Erstellen des JSON-Codes, das den Textkörper der Anforderung bildet. Ein Beispiel zum Erstellen einer Anforderung aus JavaScript finden Sie im AJAX-Dienst mit JSON und XML.