AJAX-Dienst mit HTTP POST
Das Beispiel PostAjaxService demonstriert die Verwendung von Windows Communication Foundation (WCF) zum Erstellen eines AJAX-Diensts (ASP.NET Asynchronous JavaScript and XML), der HTTP POST verwendet. Bei einem AJAX-Dienst handelt es sich um einen Dienst, auf den Sie mit einfachem JavaScript-Code von einem Webbrowserclient aus zugreifen können. Dieses Beispiel baut auf dem Beispiel Einfacher AJAX-Dienst auf. Der einzige Unterschied zwischen den beiden Beispielen besteht in der Verwendung von HTTP POST anstelle von HTTP GET.
Die AJAX-Unterstützung in Windows Communication Foundation (WCF) ist für die Verwendung mit ASP.NET AJAX über das ScriptManager
-Steuerelement optimiert. Ein Beispiel für die Verwendung von WCF mit ASP.NET AJAX finden Sie in den AJAX-Beispielen.
Hinweis
Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.
Der Dienst im folgenden Beispiel ist ein WCF-Dienst ohne AJAX-spezifischen Code.
Wenn das WebInvokeAttribute-Attribut auf einen Vorgang angewendet oder das WebGetAttribute-Attribut nicht angewendet wird, wird das HTTP-Standardverb (POST) verwendet. POST-Anforderungen sind schwieriger zu erstellen als GET-Anforderungen, sie werden jedoch nicht zwischengespeichert. Verwenden Sie POST-Anforderungen für alle Vorgänge, bei denen keine Zwischenspeicherung benötigt wird.
[ServiceContract(Namespace = "PostAjaxService")]
public interface ICalculator
{
[WebInvoke]
double Add(double n1, double n2);
//Other operations omitted…
}
Erstellen Sie im Dienst mithilfe von WebScriptServiceHostFactory einen AJAX-Endpunkt wie im Beispiel "Einfacher AJAX-Dienst".
Im Gegensatz zu GET-Anforderungen können Sie POST-Dienste nicht aus dem Browser aufrufen. So führt beispielsweise die Navigation zu http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200
zu einem Fehler, da der POST-Dienst erwartet, dass die Parameter n1
und n2
im Nachrichtentext (im JSON-Format) und nicht in der URL gesendet werden.
Die Clientwebseite "PostAjaxClientPage.aspx" enthält ASP.NET-Code zum Aufrufen des Diensts, wenn der Benutzer auf eine der Vorgangsschaltflächen auf der Seite klickt. Der Dienst antwortet auf die gleiche Weise wie im Beispiel Einfacher AJAX-Dienst, mit der GET-Anforderung.
So können Sie das Beispiel einrichten, erstellen und ausführen
Stellen Sie sicher, dass Sie die Anweisungen unter Einmaliges Setupverfahren für Windows Communication Foundation-Beispiele befolgt haben.
Erstellen Sie die Projektmappe „PostAjaxService.sln“, wie unter Erstellen der Windows Communication Foundation-Beispiele beschrieben.
Navigieren Sie zu
http://localhost/ServiceModelSamples/PostAjaxClientPage.aspx
(öffnen Sie „PostAjaxClientPage.aspx“ nicht über das Projektverzeichnis im Browser).