Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis 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.