Freigeben über


System.Web.Routing-Integration

Beim Hosten eines Windows Communication Foundation (WCF)-Diensts in Internetinformationsdienste (IIS) fügen Sie eine SVC-Datei in das virtuelle Verzeichnis ein. Diese SVC-Datei gibt die zu verwendende Diensthostfactory sowie die Klasse an, die den Dienst implementiert. Beim Senden von Anforderungen an den Dienst geben Sie die SVC-Datei im URI an, z. B.: https://contoso.com/EmployeeServce.svc. Für Programmierer, die REST-Dienste schreiben, ist dieser Typ von URI nicht optimal. URIs für REST-Dienste geben eine bestimmte Ressource an und verfügen normalerweise nicht über Erweiterungen. Mithilfe der System.Web.Routing-Integrationsfunktion können Sie einen WCF-REST-Dienst hosten, der auf URIs ohne Erweiterung reagiert. Weitere Informationen über zum Routing finden Sie unter Routing.

Verwenden der N: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. Diese Routen geben die relativen URIs an, auf die der Dienst reagiert. Dies wird im folgenden Beispiel veranschaulicht.

<%@ 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.

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

<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. Weitere Informationen finden Sie unter Routing. Außerdem müssen Sie das aspNetCompatibilityEnabled-Attribut wie im folgenden Beispiel gezeigt im <serviceHostingEnvironment>-Element auf true setzen.

<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.

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

Siehe auch

Konzepte

Routing

Weitere Ressourcen

WCF-Web-HTTP-Programmiermodell