AspNetRouteIntegrationAspNetRouteIntegration

Questo esempio viene illustrato come ospitare un servizio REST di Windows Communication Foundation (WCF) mediante route ASP.NET.This sample demonstrates how to host a Windows Communication Foundation (WCF) REST service using ASP.NET routes. Il servizio risorse di base esempio viene illustrata una versione indipendente di questo scenario e ne illustra l'implementazione del servizio in modo approfondito.The Basic Resource Service sample shows a self-hosted version of this scenario and discusses the service implementation in depth. Questo argomento descrive la funzionalità di integrazione ASP.NET.This topic focuses on the ASP.NET integration feature. Per ulteriori informazioni sul Routing di ASP.NET, vedere System.Web.Routing.For more information about ASP.NET Routing, see System.Web.Routing.

Dettagli dell'esempioSample Details

Il servizio WCF presenta una raccolta di clienti in modo risorse orientata ai servizi/REST.The WCF service exposes a collection of customers in a resource-oriented/REST manner. Proprio come un servizio WCF basato su SOAP, il servizio può essere ospitato in ASP.NET utilizzando un file con estensione svc.Just like a SOAP-based WCF service, the service can be hosted in ASP.NET using a .svc file. Tuttavia, spesso non si tratta della scelta consigliata per scenari HTTP perché richiede la presenza del file con estensione svc nell'URL del servizio.However, this is often not preferred for HTTP scenarios because it requires having .svc in the URL for the service. Inoltre, richiede la distribuzione di un file con estensione svc insieme alla libreria di servizi.In addition, it requires deploying a .svc file along with the service library. È possibile evitare tali limitazioni ospitando il servizio mediante route ASP.NET, come illustrato nel presente esempio.These limitations can be avoided by hosting the service using ASP.NET routes, as is demonstrated in this sample.

Nell'esempio il servizio viene ospitato in ASP.NET aggiungendo un oggetto ServiceRoute in un file Global.asax.The sample hosts the service in ASP.NET by adding a ServiceRoute in a Global.asax file. ServiceRoute specifica il tipo di servizio ('Service' in questo caso), il tipo di factory dell'host del servizio da utilizzare per il servizio (WebServiceHostFactory in questo caso) e l'indirizzo HTTP di base per il servizio ('~/Customers' in questo caso).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).

In aggiunta a ciò, l'esempio include un file Web.config che aggiunge UrlRoutingModule (per attivare route ASP.NET) e include la configurazione per il servizio.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. In particolare, la configurazione consente di configurare il servizio WCF con un valore predefinito WebHttpEndpoint con il HelpEnabled impostazione su true.In particular, the configuration configures the WCF service with a default WebHttpEndpoint that has the HelpEnabled setting to true. Di conseguenza, l'infrastruttura WCF crea una pagina automatica della Guida HTML in base al http://localhost/Customers/help che fornisce informazioni su come costruire HTTP richieste al servizio e come accedere alla risposta HTTP del servizio, ad esempio, un esempio di come il cliente i dettagli sono rappresentati in XML e JSON.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.

La presentazione della raccolta di clienti (e, in termini più generali, di qualsiasi risorsa) in questo modo consente a un client di interagire con un servizio in modo uniforme utilizzando URI e richieste HTTP GET, PUT, DELETE e POST.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.

Il file Program.cs nel progetto Client dimostra come è possibile creare tale client usando HttpWebRequest.Program.cs in the Client project demonstrates how such a client can be authored using HttpWebRequest. È importante sottolineare che quella descritta è solo una delle modalità per accedere a un servizio WCF.Note that this is just one way to access a WCF service. È inoltre possibile accedere al servizio usando altre classi .NET Framework come la channel factory WCF e WebClient.It is also possible to access the service using other .NET Framework classes like the WCF channel factory and WebClient. Altri esempi in SDK (ad esempio il servizio HTTP di base esempio e il la selezione automatica del formato esempio) viene illustrato come usare queste classi per comunicare con un servizio WCF.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.

L'esempio è costituito da 3 progetti:This sample consists of 3 projects:

ServiceService
Progetto di applicazione Web che include un servizio WCF HTTP ospitato in ASP.NET.A Web application project that includes a WCF HTTP service hosted in ASP.NET.

ClientClient
Progetto di applicazione console che effettua chiamate al servizio.A console application project that makes calls to the service.

CommonCommon
Libreria condivisa che contiene il tipo Customer utilizzato dal client e dal servizio.A shared library that contains the Customer type used by the client and service. Quando viene eseguita l'applicazione console client, il client effettua richieste al servizio e scrive le informazioni pertinenti dalle risposte nella finestra della console.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.

Per usare questo esempioTo use this sample

  1. Aprire la soluzione per l'esempio relativo all'integrazione di route ASP.NET in Visual Studio 2012Visual Studio 2012.Open the solution for the ASP.NET Routes Integration sample in Visual Studio 2012Visual Studio 2012.

  2. Per compilare la soluzione, premere CTRL+MAIUSC+B.Press CTRL+SHIFT+B to build the solution.

  3. Se non è già aperto, premere "CTRL + W, S" per aprire la Esplora finestra.If it is not already open, press "CTRL+W, S" to open the Solution Explorer window.

  4. Dal Esplora windows, fare doppio clic sul servizio del progetto e posizionare il cursore sul Debug opzione del menu di scelta in modo che il avviare Nuova istanza menu di scelta rapida e selezionare Avvia nuova istanza.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. Verrà avviato il server di sviluppo ASP.NET che ospita il servizio.This launches the ASP.NET development server, which hosts the service.

  5. Dal Esplora windows, fare doppio clic sul Client del progetto e posizionare il cursore sul Debug opzione del menu di scelta in modo che il Avvia nuovo Istanza menu di scelta rapida e selezionare Avvia nuova istanza.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. Verrà visualizzata la finestra della console client in cui sono inclusi l'URI del servizio in esecuzione e l'URI della pagina della Guida HTML per il servizio in esecuzione.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. In qualsiasi momento è possibile visualizzare la pagina della Guida HTML digitando l'URI della pagina della Guida in un browser.At any point in time you can view the HTML help page by typing the URI of the help page in a browser. Durante l'esecuzione dell'esempio, il client scrive lo stato dell'attività corrente.As the sample runs, the client writes the status of the current activity.

  7. Premere un tasto qualsiasi per chiudere l'applicazione console client.Press any key to terminate the client console application.

  8. Premere MAIUSC + F5 per arrestare il debug del servizio e fare doppio clic sull'icona del server di sviluppo ASP.NET nell'Area di notifica Windows e selezionare arrestare dal menu di scelta rapida.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.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your machine. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.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. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

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

Vedere ancheSee Also