Integrazione di System.Web.RoutingSystem.Web.Routing Integration

Quando si ospita un servizio Windows Communication Foundation (WCF) in Internet Information Service (IIS) posizionare un file con estensione svc nella directory virtuale.When hosting a Windows Communication Foundation (WCF) service in Internet Information Service (IIS) you place a .svc file in the virtual directory. Questo file con estensione svc specifica la factory di host del servizio da utilizzare e la classe che implementa il servizio.This .svc file specifies the service host factory to use as well as the class that implements the service. Quando si effettua richieste al servizio specificare il file con estensione svc nell'URI, ad esempio: http://contoso.com/EmployeeServce.svc.When making requests to the service you specify the .svc file in the URI, for example: http://contoso.com/EmployeeServce.svc. Per i programmatori che scrivono servizi REST, questo tipo di URI non è ottimale.For programmers writing REST services this type of URI is not optimal. Gli URI per i servizi REST indicano una risorsa specifica e in genere non presentano estensioni.URIs for REST services specify a specific resource and normally do not have any extensions. Il System.Web.Routing funzionalità di integrazione consente di ospitare un servizio WCF REST che risponde a URI sprovvisti di estensione.The System.Web.Routing integration feature allows you to host a WCF REST service that responds to URIs without an extension. Per ulteriori informazioni vedere routing Routing ASP.NET e il AspNetRouteIntegration esempio.For more information about routing see ASP.NET Routing and the AspNetRouteIntegration sample.

Utilizzo dell'integrazione System.Web.RoutingUsing System.Web.Routing Integration

Per utilizzare la funzionalità di integrazione System.Web.Routing, viene utilizzata la classe ServiceRoute per creare una o più route e aggiungerle a RouteTable in un file Global.asax.To use the System.Web.Routing integration feature, you use the ServiceRoute class to create one or more routes and add them to the RouteTable in a Global.asax file. Queste route specificano i relativi URI a cui risponde il servizio.These routes specify the relative URIs that the service responds to. Nell'esempio seguente viene illustrato come effettuare questa operazione.The following example shows how to do this.

<%@ Application Language="C#" %>  
<%@ Import Namespace="System.Web.Routing" %>  
<%@ Import Namespace="System.ServiceModel.Activation" %>  
<%@ Import Namespace="System.ServiceModel.Web " %>  

<script RunAt="server">  
    void Application_Start(object sender, EventArgs e)  
    {  
        RegisterRoutes(RouteTable.Routes);  
    }  

    private void RegisterRoutes(RouteCollection routes)  
    {  
        routes.Add(new ServiceRoute("Customers", new WebServiceHostFactory(), typeof(Service)));   
   }  
</script>  

Tutte le richieste vengono indirizzato con un URI relativo che inizia con Customers al servizio Service.This routes all requests with a relative URI that begins with Customers to the Service service.

Nel file Web.config è necessario aggiungere il modulo System.Web.Routing.UrlRoutingModule, impostare l'attributo runAllManagedModulesForAllRequests su true e aggiungere il gestore UrlRoutingHandler all'elemento <system.webServer>, come indicato nell'esempio seguente.In your Web.config file you must add the System.Web.Routing.UrlRoutingModule module, set the runAllManagedModulesForAllRequests attribute to true, and add the UrlRoutingHandler handler to the <system.webServer> element as shown in the following example.

<system.webServer>  
      <modules runAllManagedModulesForAllRequests="true">  
        <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />  
      </modules>  
      <handlers>  
        <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd"/>  
      </handlers>  
    </system.webServer>  

Vengono caricati un modulo e il gestore necessario per il routing.This loads a module and handler required for routing. Per altre informazioni, vedere Routing.For more information, see Routing. È inoltre necessario impostare l'attributo aspNetCompatibilityEnabled su true nell'elemento <serviceHostingEnvironment>, come indicato nel codice seguente.You must also set the aspNetCompatibilityEnabled attribute to true in the <serviceHostingEnvironment> element as shown in the following example.

<system.serviceModel>  
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>  
        <!-- ... -->  
    </system.serviceModel>  

La classe che implementa il servizio deve abilitare i requisiti di compatibilità ASP.NET, come indicato nell'esempio seguente.The class that implements the service must enable ASP.NET compatibility requirements as shown in the following example.

[ServiceContract]  
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]  
    public class Service  
    {  
        // ...  
    }  

Vedere ancheSee Also

Modello di programmazione HTTP Web di WCFWCF Web HTTP Programming Model
Routing di ASP.NETASP.NET Routing