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.
Das SimpleAjaxService-Beispiel veranschaulicht die Verwendung von Windows Communication Foundation (WCF), um einen einfachen ASP.NET asynchronen JavaScript- und XML-Dienst (AJAX) zu erstellen (ein Dienst, auf den Sie über einen Webbrowserclient mithilfe von JavaScript-Code zugreifen können). Der Dienst verwendet das WebGetAttribute Attribut, um sicherzustellen, dass der Dienst auf HTTP GET-Anforderungen antwortet und so konfiguriert ist, dass das JavaScript Object Notation (JSON)-Datenformat für Antworten verwendet wird.
AJAX-Unterstützung in 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 Einrichtungsschritte und Bauanleitungen für dieses Beispiel finden Sie am Ende dieses Abschnitts.
Im folgenden Code wird das WebGetAttribute Attribut auf den Add Vorgang angewendet, um sicherzustellen, dass der Dienst auf HTTP GET-Anforderungen antwortet. Der Code verwendet GET aus Gründen der Einfachheit (Sie können eine HTTP GET-Anforderung aus einem beliebigen Webbrowser erstellen). Sie können get auch verwenden, um die Zwischenspeicherung zu aktivieren. HTTP POST ist die Standardeinstellung, wenn das WebGetAttribute Attribut nicht vorhanden ist.
[ServiceContract(Namespace = "SimpleAjaxService")]
public interface ICalculator
{
[WebGet]
double Add(double n1, double n2);
//Other operations omitted…
}
Die .svc-Beispieldatei verwendet WebScriptServiceHostFactory, was einen WebScriptEndpoint Standardendpunkt für den Dienst hinzufügt. Der Endpunkt wird in einer leeren Adresse relativ zur SVC-Datei konfiguriert. Dies bedeutet, dass die Adresse des Diensts ohne zusätzliche Suffixe außer dem Vorgangsnamen lautet http://localhost/ServiceModelSamples/service.svc.
<%@ServiceHost language="C#" Debug="true" Service="Microsoft.Samples.SimpleAjaxService.CalculatorService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
Der WebScriptEndpoint Dienst ist vorkonfiguriert, um den Dienst über eine ASP.NET AJAX-Clientseite zugänglich zu machen. Der folgende Abschnitt in Web.config kann verwendet werden, um zusätzliche Konfigurationsänderungen am Endpunkt vorzunehmen. Sie kann entfernt werden, wenn keine zusätzlichen Änderungen erforderlich sind.
<system.serviceModel>
<standardEndpoints>
<webScriptEndpoint>
<!-- Use this element to configure the endpoint -->
<standardEndpoint name="" />
</webScriptEndpoint>
</standardEndpoints>
</system.serviceModel>
Das WebScriptEndpoint Standarddatenformat für den Dienst wird anstelle von XML auf JSON festgelegt. Um den Dienst aufzurufen, navigieren Sie zu http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200, nachdem Sie die Einrichtungs- und Build-Schritte abgeschlossen haben, die weiter unten in diesem Thema detailliert beschrieben werden. Diese Testfunktionalität wird durch die Verwendung einer HTTP GET-Anforderung aktiviert.
Die Clientwebseite SimpleAjaxClientPage.aspx enthält ASP.NET Code, um den Dienst aufzurufen, wenn der Benutzer auf eine der Vorgangsschaltflächen auf der Seite klickt. Das ScriptManager Steuerelement wird verwendet, um über JavaScript einen Proxy für den Dienst zugänglich zu machen.
<asp:ScriptManager ID="ScriptManager" runat="server">
<Services>
<asp:ServiceReference Path="service.svc" />
</Services>
</asp:ScriptManager>
Der lokale Proxy wird instanziiert, und Vorgänge werden mithilfe des folgenden JavaScript-Codes aufgerufen.
// 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);
Wenn der Dienstaufruf erfolgreich ist, ruft der Code den onSuccess Handler auf, und das Ergebnis des Vorgangs wird in einem Textfeld angezeigt.
function onSuccess(mathResult){
document.getElementById("result").value = mathResult;
}