System.Web.Routing-IntegrationSystem.Web.Routing Integration

Wenn einen Windows Communication Foundation (WCF)-Dienst in Internet Information Service (IIS) gehostet wird. platzieren Sie eine SVC-Datei in das virtuelle Verzeichnis.When hosting a Windows Communication Foundation (WCF) service in Internet Information Service (IIS) you place a .svc file in the virtual directory. Diese SVC-Datei gibt die zu verwendende Diensthostfactory sowie die Klasse an, die den Dienst implementiert.This .svc file specifies the service host factory to use as well as the class that implements the service. Beim Bereitstellen von Anforderungen an den Dienst geben Sie die SVC-Datei im URI an, z. B.: 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. Für Programmierer, die REST-Dienste schreiben, ist dieser Typ von URI nicht optimal.For programmers writing REST services this type of URI is not optimal. URIs für REST-Dienste geben eine bestimmte Ressource an und verfügen normalerweise nicht über Erweiterungen.URIs for REST services specify a specific resource and normally do not have any extensions. Die System.Web.Routing -Integrationsfunktion können Sie zum Hosten eines WCF REST-Diensts, der auf URIs ohne Erweiterung reagiert.The System.Web.Routing integration feature allows you to host a WCF REST service that responds to URIs without an extension. Weitere Informationen zu routing finden Sie unter ASP.NET Routing und AspNetRouteIntegration Beispiel.For more information about routing see ASP.NET Routing and the AspNetRouteIntegration sample.

Verwenden der System.Web.Routing-IntegrationUsing System.Web.Routing Integration

Für die System.Web.Routing-Integrationsfunktion verwenden Sie die ServiceRoute-Klasse, um eine oder mehrere Routen zu erstellen und diese dem RouteTable-Objekt in einer Global.asax-Datei hinzuzufügen.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. Diese Routen geben die relativen URIs an, auf die der Dienst reagiert.These routes specify the relative URIs that the service responds to. Das folgende Beispiel zeigt die dazu erforderliche Vorgehensweise.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>  

Hier werden alle Anforderungen mit einem relativen URI, die mit "Customers" beginnen, an den Service-Dienst weitergeleitet.This routes all requests with a relative URI that begins with Customers to the Service service.

In der Datei "Web.config" müssen Sie das System.Web.Routing.UrlRoutingModule-Modul hinzufügen, das runAllManagedModulesForAllRequests-Attribut auf true setzen und dem UrlRoutingHandler-Element den <system.webServer>-Handler hinzufügen. Dies wird im folgenden Beispiel veranschaulicht.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>  

Es werden ein Modul und ein Handler geladen, die für das Routing erforderlich sind.This loads a module and handler required for routing. Weitere Informationen finden Sie unter Routing.For more information, see Routing. Außerdem müssen Sie das aspNetCompatibilityEnabled-Attribut wie im folgenden Beispiel gezeigt im true-Element auf <serviceHostingEnvironment> setzen.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>  

Die Klasse, die den Dienst implementiert, muss die ASP.NET-Kompatibilitätsanforderungen wie im folgenden Beispiel gezeigt aktivieren.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  
    {  
        // ...  
    }  

Siehe auchSee Also

WCF-Web-HTTP-ProgrammiermodellWCF Web HTTP Programming Model
ASP.NET-RoutingASP.NET Routing