다음을 통해 공유


System.Web.Routing 통합

IIS(인터넷 정보 서비스)에서 WCF(Windows Communication Foundation) 서비스를 호스팅하는 경우 가상 디렉터리에 .svc 파일을 저장합니다. 이 .svc 파일은 사용할 서비스 호스트 팩터리와 함께 서비스를 구현하는 클래스를 지정합니다. 서비스를 요청할 때는 https://contoso.com/EmployeeServce.svc와 같은 URI를 사용하여 .svc 파일을 지정합니다. REST 서비스를 작성하는 프로그래머에게는 이러한 유형의 URI가 적합하지 않을 수 있습니다. REST 서비스의 URI는 특정 리소스를 지정하며 일반적으로 확장을 포함하지 않습니다. System.Web.Routing 통합 기능을 사용하면 확장이 없는 URI에 응답하는 WCF REST 서비스를 호스팅할 수 있습니다. 라우팅에 대한 자세한 내용은 라우팅을 참조하십시오.

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>

그러면 Customers로 시작하는 상대 URI가 있는 모든 요청이 Service 서비스에 라우트됩니다.

Web.config 파일에서는 다음 예제와 같이 System.Web.Routing.UrlRoutingModule 모듈을 설정하고, runAllManagedModulesForAllRequests 특성을 true로 설정하고, <system.webServer> 요소에 UrlRoutingHandler 처리기를 추가해야 합니다.

<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 웹 HTTP 프로그래밍 모델