Vorgehensweise: Verwenden der Konfiguration zum Hinzufügen eines ASP.NET AJAX-Endpunkts
Mit Windows Communication Foundation (WCF) können Sie einen Dienst erstellen, der einen Endpunkt mit ASP.NET-AJAX-Aktivierung verfügbar macht, welcher auf einer Clientwebsite über JavaScript aufgerufen werden kann. Zum Erstellen eines solchen Endpunkts können Sie entweder – wie bei allen anderen WCF-Endpunkten auch – eine Konfigurationsdatei verwenden, oder Sie können eine Methode einsetzen, die keine Konfigurationselemente benötigt. In diesem Thema wird die Konfigurationsmethode veranschaulicht.
Der Teil der Prozedur, durch den der Dienstendpunkt für ASP.NET AJAX aktiviert wird, besteht aus dem Konfigurieren des Endpunkts für die Verwendung von WebHttpBinding und dem Hinzufügen des Verhaltens des <enableWebScript>-Endpunkts. Die Schritte zum Implementieren und Hosten des Diensts nach der Konfiguration des Endpunkts ähneln den Schritten, die von jedem WCF-Dienst verwendet werden. Ein funktionierendes Beispiel finden Sie unter AJAX-Dienst mit HTTP POST.
Weitere Informationen zum Konfigurieren eines ASP.NET-AJAX-Endpunkts ohne Verwendung einer Konfiguration finden Sie unter Vorgehensweise: Hinzufügen eines ASP.NET AJAX-Endpunkts ohne Verwendung einer Konfiguration.
So erstellen Sie einen WCF-Basisdienst
Definieren Sie einen grundlegenden WCF-Dienstvertrag mit einer Schnittstelle, die mit dem Attribut ServiceContractAttribute gekennzeichnet ist. Markieren Sie jeden Vorgang mit OperationContractAttribute. Stellen Sie sicher, dass Sie die Namespace-Eigenschaft festlegen.
[ServiceContract(Namespace = "MyService")] public interface ICalculator { [OperationContract] // This operation returns the sum of d1 and d2. double Add(double n1, double n2); //Other operations omitted… }
Implementieren Sie den
ICalculator
-Dienstvertrag mitCalculatorService
.public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } // Other operations omitted… }
Definieren Sie einen Namespace für die
ICalculator
- und dieCalculatorService
-Implementierung, indem Sie sie in einen Namespaceblock einschließen.namespace Microsoft.Ajax.Samples { //Include the code for ICalculator and Calculator here. }
So erstellen Sie einen ASP.NET AJAX-Endpunkt für den Dienst
Erstellen Sie eine Verhaltenskonfiguration, und geben Sie das <enableWebScript>-Verhalten für ASP.NET-AJAX-aktivierte Endpunkte des Diensts an.
<system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="AspNetAjaxBehavior"> <enableWebScript /> </behavior> </endpointBehaviors> </behaviors> </system.serviceModel>
Erstellen Sie einen Endpunkt für den Dienst, der WebHttpBinding und das ASP.NET AJAX-Verhalten verwendet, das im vorherigen Schritt definiert wurde.
<system.serviceModel> <services> <service name="Microsoft.Ajax.Samples.CalculatorService"> <endpoint address="" behaviorConfiguration="AspNetAjaxBehavior" binding="webHttpBinding" contract="Microsoft.Ajax.Samples.ICalculator" /> </service> </services> </system.serviceModel>
So hosten Sie den Dienst in IIS
Um den Dienst in IIS zu hosten, erstellen Sie in der Anwendung eine neue Datei mit dem Namen service und einer SVC-Erweiterung. Bearbeiten Sie diese Datei, indem Sie die entsprechenden @ServiceHost-Anweisungsinformationen für den Dienst hinzufügen. Die Dienstdatei für das
CalculatorService
-Beispiel enthält z. B. folgende Informationen.<%@ServiceHost language=c# Debug="true" Service="Microsoft.Ajax.Samples.CalculatorService" %>
Weitere Informationen zum Hosten in IIS finden Sie unter Gewusst wie: Hosten eines WCF-Diensts in IIS.
So rufen Sie den Dienst auf
- Der Endpunkt ist an einer leeren Adresse konfiguriert, die relativ zur SVC-Datei festgelegt ist. Daher ist der Dienst jetzt verfügbar und kann durch Senden von Anforderungen an „service.svc/<Vorgang>“ aufgerufen werden – beispielsweise durch „service.svc/Add“ für den
Add
-Vorgang. Sie können ihn verwenden, indem Sie die Endpunkt-URL in die Scripts-Auflistung des ASP.NET AJAX Script Manager-Steuerelements eingeben. Ein Beispiel finden Sie unter AJAX-Dienst mit HTTP POST.