AspNetRouteIntegrationAspNetRouteIntegration

Dieses Beispiel veranschaulicht, wie ein Windows Communication Foundation (WCF)-REST-Dienst mit ASP.NET-Routen gehostet werden.This sample demonstrates how to host a Windows Communication Foundation (WCF) REST service using ASP.NET routes. Die grundlegenden Ressourcendiensts Beispiel zeigt eine selbst gehostete Version dieses Szenarios und die dienstimplementierung ausführlich erläutert.The Basic Resource Service sample shows a self-hosted version of this scenario and discusses the service implementation in depth. In diesem Thema steht die ASP.NET-Integrationsfunktion im Vordergrund.This topic focuses on the ASP.NET integration feature. Weitere Informationen zu ASP.NET-Routing finden Sie unter System.Web.Routing.For more information about ASP.NET Routing, see System.Web.Routing.

BeispieldetailsSample Details

Der WCF-Dienst macht eine Auflistung von Kunden auf ressourcenorientierte/REST-Weise verfügbar.The WCF service exposes a collection of customers in a resource-oriented/REST manner. Genau wie einen SOAP-basierten WCF-Dienst kann der Dienst in ASP.NET mithilfe einer SVC-Datei gehostet werden.Just like a SOAP-based WCF service, the service can be hosted in ASP.NET using a .svc file. Diese Vorgehensweise empfiehlt sich in HTTP-Szenarien jedoch häufig nicht, da sie erfordert, dass die URL für den Dienst .svc enthält.However, this is often not preferred for HTTP scenarios because it requires having .svc in the URL for the service. Darüber hinaus muss dafür eine SVC-Datei mit der Dienstbibliothek bereitgestellt werden.In addition, it requires deploying a .svc file along with the service library. Diese Einschränkungen lassen sich vermeiden, wenn der Dienst mit ASP.NET-Routen gehostet wird, wie in diesem Beispiel gezeigt.These limitations can be avoided by hosting the service using ASP.NET routes, as is demonstrated in this sample.

Im Beispiel wird der Dienst in ASP.NET gehostet, indem ServiceRoute in einer Global.asax-Datei hinzugefügt wird.The sample hosts the service in ASP.NET by adding a ServiceRoute in a Global.asax file. Die ServiceRoute gibt den Typ des Diensts (in diesem Fall 'Service'), den Typ der für diesen Dienst zu verwendenden Diensthostfactory (in diesem Fall WebServiceHostFactory) und die HTTP-Basisadresse für den Dienst (in diesem Fall '~/Customers’) an.The ServiceRoute specifies the type of the service (‘Service’ in this case), the type of the service host factory to use for the service (WebServiceHostFactory in this case) and the HTTP base address for the service (‘~/Customers’ in this case).

Außerdem umfasst das Beispiel eine Web.config-Datei, die das UrlRoutingModule hinzufügt (um ASP.NET-Routen zu aktivieren) und die Konfiguration für den Dienst enthält.In addition to this, the sample includes a Web.config that adds the UrlRoutingModule (to turn on ASP.NET routes) and includes the configuration for the service. Die Konfiguration konfiguriert insbesondere den WCF-Dienst hat den Standardwert WebHttpEndpoint , besitzt die HelpEnabled auf true.In particular, the configuration configures the WCF service with a default WebHttpEndpoint that has the HelpEnabled setting to true. Daher erstellt die WCF-Infrastruktur für eine automatische HTML-basierte Hilfeseite unter http://localhost/Customers/help , die Informationen dazu bereitstellt wie HTTP-Anforderungen für den Dienst und den Dienst HTTP-Antwort – z. B. Zugriff auf ein Beispiel dafür, wie der Kunde Details werden in XML und JSON dargestellt.As a result, the WCF infrastructure creates an automatic HTML based help page at http://localhost/Customers/help that provides information about how to construct HTTP requests to the service and how to access the service’s HTTP response – for instance, an example of how the customer details are represented in XML and JSON.

Indem der Client die Kundenauflistung (und, allgemeiner ausgedrückt, jede Ressource) auf diese Weise verfügbar macht, kann er mithilfe von URIs sowie HTTP GET, PUT, DELETE und POST auf einheitliche Weise mit einem Dienst interagieren.Exposing the customer collection (and more generally, any resource) in this manner allows a client to interact with a service in a uniform way using URIs and HTTP GET, PUT, DELETE and POST.

Program.cs im Clientprojekt zeigt, wie ein Client dieser Art mit HttpWebRequest erstellt werden kann.Program.cs in the Client project demonstrates how such a client can be authored using HttpWebRequest. Beachten Sie, dass dies nur eine Möglichkeit für den Zugriff auf einen WCF-Dienst darstellt.Note that this is just one way to access a WCF service. Es ist auch möglich, die Zugriff auf den Dienst mit anderen .NET Framework-Klassen wie der WCF-Kanalfactory und WebClient.It is also possible to access the service using other .NET Framework classes like the WCF channel factory and WebClient. Weitere Beispiele im SDK (z. B. die grundlegenden HTTP-Dienst Beispiel und die automatische Formatauswahl Beispiel) zeigen, wie Sie diese Klassen verwenden, um die Kommunikation mit einem WCF-Dienst.Other samples in the SDK (such as the Basic HTTP Service sample and the Automatic Format Selection sample) show how to use these classes to communicate with a WCF service.

Dieses Beispiel besteht aus drei Projekten:This sample consists of 3 projects:

DienstService
Ein Webanwendungsprojekt einschließlich WCF-HTTP-Dienst, der in ASP.NET gehostet wird.A Web application project that includes a WCF HTTP service hosted in ASP.NET.

ClientClient
Ein Konsolenanwendungsprojekt, das Aufrufe an den Dienst ausführt.A console application project that makes calls to the service.

AllgemeinCommon
Eine freigegebene Bibliothek, die den vom Client und vom Dienst verwendeten Customer-Typ enthält.A shared library that contains the Customer type used by the client and service. Während die Clientkonsolenanwendung ausgeführt wird, sendet der Client Anforderungen an den Dienst und schreibt die in den Antworten enthaltenen wichtigen Informationen in das Konsolenfenster.As the client console application runs, the client makes requests to the service and writes the pertinent information from the responses to the console window.

So verwenden Sie dieses BeispielTo use this sample

  1. Öffnen Sie die Projektmappe für das Beispiel der ASP.NET-Routenintegration in Visual Studio 2012Visual Studio 2012.Open the solution for the ASP.NET Routes Integration sample in Visual Studio 2012Visual Studio 2012.

  2. Drücken Sie STRG+UMSCHALT+B, um die Projektmappe zu erstellen.Press CTRL+SHIFT+B to build the solution.

  3. Wenn es nicht bereits geöffnet ist, drücken Sie "STRG + W, S", öffnen Sie die Projektmappen-Explorer Fenster.If it is not already open, press "CTRL+W, S" to open the Solution Explorer window.

  4. Aus der Projektmappen-Explorer Windows Maustaste die Service Projekt, und platzieren Sie den Cursor über die Debuggen Kontextmenüoption, damit die starten Neue Instanz Kontextmenü wird angezeigt, und wählen Sie neue Instanz starten.From the Solution Explorer windows, right-click the Service project and place the cursor over the Debug context menu option so that the Start New Instance context menu appears and select Start New Instance. Der ASP.NET-Entwicklungsserver, der den Dienst hostet, wird gestartet.This launches the ASP.NET development server, which hosts the service.

  5. Aus der Projektmappen-Explorer Windows Maustaste die Client Projekt, und platzieren Sie den Cursor über die Debuggen Kontextmenüoption, damit die neue starten Instanz Kontextmenü wird angezeigt, und wählen Sie neue Instanz starten.From the Solution Explorer windows, right-click the Client project and place the cursor over the Debug context menu option so that the Start New Instance context menu appears and select Start New Instance.

  6. Im eingeblendeten Clientkonsolenfenster werden der URI des ausgeführten Diensts und der URI der HTML-Hilfeseite für den ausgeführten Dienst angezeigt.The client console window appears and provides the URI of the running service and the URI of the HTML help page for the running service. Sie können die HTML-Hilfeseite jederzeit anzeigen, indem sie den URI der Hilfeseite in einem Browser eingeben.At any point in time you can view the HTML help page by typing the URI of the help page in a browser. Während das Beispiel ausgeführt wird, schreibt der Client den Status der aktuellen Aktivität.As the sample runs, the client writes the status of the current activity.

  7. Drücken Sie eine beliebige Taste, um die Clientkonsolenanwendung zu beenden.Press any key to terminate the client console application.

  8. Drücken Sie UMSCHALT + F5, um den Dienst Debuggen beenden, in der Windows-Infobereich mit der Maustaste des Symbol "ASP.NET Development Server", und wählen Sie beenden aus dem Kontextmenü.Press Shift+F5 to stop debugging the service and in the Windows Notification Area, right-click the ASP.NET development server icon and select Stop from the context menu.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, fahren Sie mit Windows Communication Foundation (WCF) und Windows Workflow Foundation (WF) Samples for .NET Framework 4 aller Windows Communication Foundation (WCF) herunterladen und WFWF Beispiele.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Web\AspNetRouteIntegration

Siehe auchSee Also