共用方式為


System.Web.Routing 整合

在 Internet Information Service (IIS) 中裝載 Windows Communication Foundation (WCF) 服務時,您會將一個 .svc 檔案置入虛擬目錄。 此 .svc 檔案會指定要使用的服務主機處理站,以及實作服務的類別。 向服務進行要求時,您可在 URI 中指定 .svc 檔案,例如:https://contoso.com/EmployeeServce.svc。 對於撰寫 REST 服務的程式設計人員而言,此類型的 URI 不是最佳的方法。 REST 服務的 URI 會指定特定資源,且一般來說沒有任何擴充。 System.Web.Routing 整合功能可讓您裝載 WCF REST 服務,該服務不需要擴充即可回應 URI。如需詳細資訊路由的詳細資訊,請參閱路由

使用 N:System.Web.Routing 整合

若要使用 System.Web.Routing 整合功能,請使用 ServiceRoute 類別建立一個或多個路由,並且將路由加入至 Global.asax 檔案中的 RouteTable。 這些路由會指定服務回應的相對 URI。 下列範例示範如何執行這項工作。

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

這會將含有相對 URI 以 Customers 開頭的所有要求路由至 Service 服務。

在 Web.config 檔案中,您必須加入 System.Web.Routing.UrlRoutingModule 模組、將 runAllManagedModulesForAllRequests屬性設定為 true,並且將 UrlRoutingHandler 處理常式加入至 <system.webServer> 項目,如下列範例所示。

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

這會載入路由需要的模組與處理常式。 如需詳細資訊,請參閱 路由. 您也必須在 <serviceHostingEnvironment> 項目中,將 aspNetCompatibilityEnabled 屬性設定為 true,如下列範例所示。

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

實作服務的類別必須啟用 ASP.NET 相容性需求,如下列範例所示。

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

另請參閱

概念

路由

其他資源

WCF Web HTTP 程式設計模型