IIS(인터넷 정보 서비스)에서 호스트되는 WCF(Windows Communication Foundation) 서비스 개발 및 배포는 다음 작업으로 구성됩니다.
IIS, ASP.NET, WCF 및 WCF 활성화 구성 요소가 올바르게 설치되고 등록되었는지 확인합니다.
새 IIS 애플리케이션을 만들거나 기존 ASP.NET 애플리케이션을 다시 사용합니다.
WCF 서비스에 대한 .svc 파일을 만듭니다.
IIS 애플리케이션에 서비스 구현을 배포합니다.
WCF 서비스를 구성합니다.
IIS 호스팅 WCF 서비스를 만드는 방법에 대한 자세한 연습은 방법: IIS에서 WCF 서비스 호스트를 참조하세요.
IIS, ASP.NET 및 WCF가 올바르게 설치 및 등록되었는지 확인합니다.
IIS 호스팅 WCF 서비스가 제대로 작동하려면 WCF, IIS 및 ASP.NET 설치해야 합니다. WCF(.NET Framework의 일부로), ASP.NET 및 IIS를 설치하는 절차는 운영 체제에 따라 다릅니다. WCF 및 .NET Framework 설치에 대한 자세한 내용은 개발자용 .NET Framework 설치를 참조하세요. Windows 10에 IIS를 설치하려면 제어판에서 프로그램 및 기능을 연 다음 Windows 기능 켜기 또는 끄기를 선택합니다. Windows 기능에서 인터넷 정보 서비스를 선택한 다음 확인을 선택합니다.
다른 운영 체제에 IIS를 설치하기 위한 지침은 Windows Vista 및 Windows 7에 IIS 설치 및 WindowsServer 2012 R2에 IIS 8.5 설치에서 찾을 수 있습니다.
.NET Framework의 설치 프로세스는 IIS가 컴퓨터에 이미 있는 경우 IIS에 WCF를 자동으로 등록합니다. .NET Framework 이후에 IIS를 설치하는 경우 IIS 및 ASP.NET WCF를 등록하려면 추가 단계가 필요합니다. 운영 체제에 따라 다음과 같이 이 작업을 수행할 수 있습니다.
Windows 7 및 Windows Server 2003: ServiceModel 등록 도구(ServiceModelReg.exe) 도구를 사용하여 IIS에 WCF를 등록합니다. 이 도구를 사용하려면
ServiceModelReg.exe /i /x
또는ServiceModelReg.exe /i /x
에서 를 입력합니다.Windows 7: 마지막으로 ASP.NET .NET Framework 버전 4 이상을 사용하도록 구성되어 있는지 확인해야 합니다. 옵션을 사용하여 ASPNET_Regiis 도구를 실행하여 이 작업을 수행합니다
–i
. 자세한 내용은 ASP.NET IIS 등록 도구를 참조하세요.
새 IIS 애플리케이션 만들기 또는 기존 ASP.NET 애플리케이션 다시 사용
IIS 호스팅 WCF 서비스는 IIS 애플리케이션 내에 있어야 합니다. WCF 서비스를 단독으로 호스트하는 새 IIS 애플리케이션을 만들 수 있습니다. 또는 이미 ASP.NET 2.0 콘텐츠를 호스팅하는 기존 애플리케이션에 WCF 서비스를 배포할 수 있습니다(예: .aspx 페이지 및 ASP.NET 웹 서비스 [ASMX]). 이러한 옵션에 대한 자세한 내용은 WCF 서비스 및 ASP.NET "ASP.NET 함께 WCF 호스팅" 및 "ASP.NET 호환 모드에서 WCF 서비스 호스팅" 섹션을 참조하세요.
IIS 6.0 이상 버전은 격리된 개체 지향 프로그래밍 애플리케이션을 주기적으로 다시 시작합니다. 기본값은 1740분입니다. 지원되는 최대값은 71,582분입니다. 이 다시 시작을 사용하지 않도록 설정할 수 있습니다. 이 속성에 대한 자세한 내용은 PeriodicRestartTime을 참조하세요.
WCF 서비스에 대한 .svc 파일 만들기
IIS에서 호스트되는 WCF 서비스는 IIS 애플리케이션 내에서 특수 콘텐츠 파일(.svc 파일)로 표시됩니다. 이 모델은 ASMX 페이지가 IIS 애플리케이션 내에서 .asmx 파일로 표시되는 방식과 유사합니다. .svc 파일에는 WCF 호스팅 인프라가 들어오는 메시지에 대한 응답으로 호스트된 서비스를 활성화할 수 있도록 하는 WCF 관련 처리 지시문(@ServiceHost)이 포함되어 있습니다. .svc 파일에 대한 가장 일반적인 구문은 다음 문에 있습니다.
<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>
@ServiceHost 지시문과 단일 특성Service
으로 구성됩니다. 특성 값 Service
은 서비스 구현의 CLR(공용 언어 런타임) 형식 이름입니다. 이 지시문을 사용하는 것은 기본적으로 다음 코드를 사용하여 서비스 호스트를 만드는 것과 같습니다.
new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );
서비스에 대한 기본 주소 목록 만들기와 같은 추가 호스팅 구성도 수행할 수 있습니다. 사용자 지정 ServiceHostFactory를 사용하여 사용자 지정 호스팅 솔루션에 지시문을 확장할 수도 있습니다. WCF 서비스를 호스트하는 IIS 애플리케이션은 인스턴스의 ServiceHost 생성 및 수명을 관리할 책임이 없습니다. 관리되는 WCF 호스팅 인프라는 .svc 파일에 대한 첫 번째 요청을 받으면 필요한 ServiceHost 인스턴스를 동적으로 만듭니다. 인스턴스는 코드에 의해 명시적으로 닫히거나 애플리케이션이 재활용될 때까지 해제되지 않습니다.
.svc 파일의 구문에 대한 자세한 내용은 @ServiceHost 참조하세요.
IIS 애플리케이션에 서비스 구현 배포
IIS에서 호스트되는 WCF 서비스는 ASP.NET 2.0과 동일한 동적 컴파일 모델을 사용합니다. ASP.NET 마찬가지로 다음과 같이 다양한 위치에서 여러 가지 방법으로 IIS 호스팅 WCF 서비스에 대한 구현 코드를 배포할 수 있습니다.
GAC(전역 어셈블리 캐시) 또는 애플리케이션의 \bin 디렉터리에 있는 미리 컴파일된 .dll 파일입니다. 미리 컴파일된 이진 파일은 새 버전의 클래스 라이브러리가 배포될 때까지 업데이트되지 않습니다.
애플리케이션의 \App_Code 디렉터리에 있는 컴파일되지 않은 원본 파일입니다. 이 디렉터리에 있는 원본 파일은 애플리케이션의 첫 번째 요청을 처리할 때 동적으로 필요합니다. \App_Code 디렉터리의 파일을 변경하면 다음 요청을 받을 때 전체 애플리케이션이 재활용되고 다시 컴파일됩니다.
.svc 파일에 직접 배치된 컴파일되지 않은 코드입니다. 구현 코드는 @ServiceHost 지시문 이후 서비스의 .svc 파일에서 인라인으로 배치할 수도 있습니다. 인라인 코드를 변경하면 다음 요청을 받을 때 애플리케이션이 재활용되고 다시 컴파일됩니다.
ASP.NET 2.0 컴파일 모델에 대한 자세한 내용은 ASP.NET 컴파일 개요를 참조하세요.
WCF 서비스 구성
IIS 호스팅 WCF 서비스는 애플리케이션 Web.config 파일에 해당 구성을 저장합니다. IIS 호스팅 서비스는 IIS 외부에서 호스트되는 WCF 서비스와 동일한 구성 요소 및 구문을 사용합니다. 그러나 다음 제약 조건은 IIS 호스팅 환경에 고유합니다.
IIS 호스팅 서비스의 기본 주소입니다.
IIS 외부에서 WCF 서비스를 호스팅하는 애플리케이션은 기본 주소 URI 집합을 생성자에 전달하거나 서비스 구성에 ServiceHost 호스트하는 서비스의 기본 주소를 제어할 < 수 있습니다. IIS에서 호스트되는 서비스에는 기본 주소를 제어할 수 있는 기능이 없습니다. IIS 호스팅 서비스의 기본 주소는 .svc 파일의 주소입니다.
IIS-Hosted 서비스의 엔드포인트 주소
IIS에서 호스트되는 경우 엔드포인트 주소는 항상 서비스를 나타내는 .svc 파일의 주소를 기준으로 간주합니다. 예를 들어 WCF 서비스의 기본 주소가 http://localhost/Application1/MyService.svc
다음 엔드포인트 구성을 사용하는 경우
<endpoint address="anotherEndpoint" />
http://localhost/Application1/MyService.svc/anotherEndpoint
에서 접근할 수 있는 엔드포인트가 제공됩니다.
마찬가지로 상대 주소로 빈 문자열을 사용하는 엔드포인트 구성 요소는 기본 주소인 엔드포인트에 http://localhost/Application1/MyService.svc
연결할 수 있는 엔드포인트를 제공합니다.
<endpoint address="" />
IIS 호스팅 서비스 엔드포인트에 대해 항상 상대 엔드포인트 주소를 사용해야 합니다. 엔드포인트 주소가 엔드포인트를 노출하는 서비스를 호스트하는 IIS 애플리케이션을 가리키지 않는 경우 정규화된 엔드포인트 주소(예 http://localhost/MyService.svc
: )를 제공하면 서비스 배포에 오류가 발생할 수 있습니다. 호스트된 서비스에 대해 상대 엔드포인트 주소를 사용하면 이러한 잠재적 충돌을 방지할 수 있습니다.
사용 가능한 교통수단
IIS 5.1 및 IIS 6.0에서 호스트되는 WCF 서비스는 HTTP 기반 통신을 사용하도록 제한됩니다. 이러한 IIS 플랫폼에서 HTTP가 아닌 바인딩을 사용하도록 호스트된 서비스를 구성하면 서비스 활성화 중에 오류가 발생합니다. IIS 7.0의 경우 지원되는 전송에는 기존 MSMQ 애플리케이션과의 호환성을 위해 HTTP, Net.TCP, Net.Pipe, Net.MSMQ 및 msmq.formatname이 포함됩니다.
HTTP 전송 보안
서비스가 포함된 IIS 가상 디렉터리가 이러한 설정을 지원하는 한 IIS 호스팅 WCF 서비스는 HTTP 전송 보안(예: 기본, 다이제스트 및 Windows 통합 인증과 같은 HTTPS 및 HTTP 인증 체계)을 사용할 수 있습니다. 호스트된 엔드포인트의 바인딩에 대한 HTTP 전송 보안 설정은 이 설정이 포함된 IIS 가상 디렉터리의 전송 보안 설정과 일치해야 합니다.
예를 들어 HTTP 다이제스트 인증을 사용하도록 구성된 WCF 엔드포인트는 HTTP 다이제스트 인증을 허용하도록 구성된 IIS 가상 디렉터리에 있어야 합니다. IIS 설정과 WCF 엔드포인트 설정의 일치하지 않는 조합으로 인해 서비스 활성화 중에 오류가 발생합니다.