<serviceHostingEnvironment>
이 요소는 특정 전송을 위해 서비스 호스팅 환경에서 인스턴스화하는 형식을 정의합니다. 이 요소가 비어 있으면 기본 형식이 사용됩니다. 이 요소는 애플리케이션이나 컴퓨터 수준 구성 파일에서만 사용할 수 있습니다.
<configuration>
<system.serviceModel>
<serviceHostingEnvironment>
구문
<serviceHostingEnvironment aspNetCompatibilityEnabled="Boolean"
minFreeMemoryPercentageToActivateService="Integer"
multipleSiteBindingsEnabled="Boolean">
<baseAddressPrefixFilters>
<add prefix="string" />
</baseAddressPrefixFilters>
<serviceActivations>
<add factory="String"
service="String" />
</serviceActivations>
<transportConfigurationTypes>
<add name="String"
transportConfigurationType="String" />
</transportConfigurationTypes>
</serviceHostingEnvironment>
특성 및 요소
다음 섹션에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.
특성
특성 | Description |
---|---|
aspNetCompatibilityEnabled | 현재 애플리케이션에 ASP.NET 호환 모드를 설정했는지 여부를 나타내는 부울 값입니다. 기본값은 false 입니다.이 특성이 true 로 설정되면 WCF(Windows Communication Foundation) 서비스에 대한 요청이 ASP.NET HTTP 파이프라인을 통해 전달되며 HTTP가 아닌 프로토콜을 통한 통신이 허용되지 않습니다. 자세한 내용은 WCF 서비스 및 ASP.NET을 참조하세요. |
minFreeMemoryPercentageToActivateService | WCF 서비스를 활성화할 수 있습니다 시스템에 사용할 수 있는 사용 가능한 메모리의 최소 크기를 지정 하는 정수입니다. 주의: WCF 서비스의 web.config 파일에서 부분 신뢰와 함께 이 특성을 지정하면 서비스가 실행될 때 SecurityException이 발생합니다. |
multipleSiteBindingsEnabled | 사이트별로 여러 IIS 바인딩을 사용할 수 있는지 여부를 지정하는 부울 값입니다. IIS는 가상 디렉터리를 포함하는 가상 애플리케이션의 컨테이너인 웹 사이트로 구성됩니다. 사이트의 애플리케이션은 하나 이상의 IIS 바인딩을 통해 액세스될 수 있습니다. 하나의 IIS 바인딩은 바인딩 프로토콜과 바인딩 정보라는 두 가지 정보를 제공합니다. 바인딩 프로토콜은 통신이 이루어지는 체계를 정의하며, 바인딩 정보는 사이트에 액세스하는 데 사용되는 정보입니다. 바인딩 프로토콜의 예로는 HTTP가 있으며 바인딩 정보에는 IP 주소, 포트, 호스트 헤더 등이 포함될 수 있습니다. IIS에서는 사이트별로 여러 개의 IIS 바인딩을 지정할 수 있으므로, 체계별로 여러 개의 기본 주소가 생성됩니다. 그러나 사이트에서 호스팅되는 Windows Communication Foundation (WCF) 서비스에는 체계 별로 하나의 baseAddress에 바인딩할 수 있습니다. WCF(Windows Communication Foundation) 서비스에 대해 사이트별로 여러 IIS 바인딩을 사용할 수 있도록 하려면 이 특성을 true 로 설정합니다. 여러 사이트 바인딩은 HTTP 프로토콜에 대해서만 지원됩니다. 구성 파일의 엔드포인트 주소는 전체 URI여야 합니다. |
자식 요소
요소 | Description |
---|---|
<baseAddressPrefixFilters> | 서비스 호스트에서 사용하는 기본 주소에 대한 접두사 필터를 지정하는 구성 요소 컬렉션입니다. |
<serviceActivations> | 활성화 설정을 설명하는 구성 섹션입니다. |
<transportConfigurationTypes> | 특정 전송의 형식을 식별하는 구성 요소의 컬렉션입니다. |
부모 요소
요소 | Description |
---|---|
serviceModel | 모든 WCF(Windows Communication Foundation) 구성 요소의 루트 요소입니다. |
설명
기본적으로 WCF 서비스는 호스트된 애플리케이션 도메인(AppDomain)에서 ASP.NET과 함께 실행됩니다. 동일한 AppDomain에서 WCF와 ASP.NET을 함께 사용할 수 있더라도 WCF 요청은 기본적으로 ASP.NET HTTP 파이프라인에 의해 처리되지 않습니다. 따라서 ASP.NET 애플리케이션 플랫폼의 여러 요소를 WCF 서비스에 사용할 수 없습니다. 여기에는 다음이 포함됩니다.
ASP.NET 파일/URL 권한 부여
ASP.NET 가장
쿠키 기반 세션 상태
HttpContext.Current
사용자 지정 HttpModule을 통한 파이프라인 확장성
WCF 서비스가 ASP.NET 컨텍스트에서 작동해야 하고 이 서비스가 HTTP를 통해서만 통신하는 경우 WCF의 ASP.NET 호환 모드를 사용할 수 있습니다. 이 모드는 애플리케이션 수준에서 aspNetCompatibilityEnabled
특성이 true
로 설정되면 사용하도록 설정됩니다. 서비스 구현에서는 AspNetCompatibilityRequirementsAttribute 클래스를 사용하여 호환 모드에서 실행되는 기능을 선언해야 합니다. 호환 모드를 사용하는 경우 다음과 같습니다.
ASP.NET 파일/URL 권한 부여가 WCF 인증 전에 적용됩니다. 권한 부여 결정은 요청의 전송 수준 ID에 따라 달라집니다. 메시지 수준의 ID가 무시됩니다.
WCF 서비스 작업이 ASP.NET 가장 컨텍스트에서 실행되기 시작합니다. ASP.NET 가장 및 WCF 가장이 모두 특정 서비스에 사용하도록 설정되면 WCF 가장 컨텍스트가 적용됩니다.
HttpContext.Current는 WCF 서비스 코드에서 사용할 수 있으며, 서비스에서 HTTP가 아닌 엔드포인트를 노출할 수 없습니다.
WCF 요청은 ASP.NET 파이프라인에서 처리됩니다. 들어오는 요청에서 동작하도록 구성된 HttpModule에서는 WCF 요청도 처리할 수 있습니다. 여기에는 사용자 지정 타사 모듈뿐만 아니라 SessionStateModule과 같은 ASP.NET 플랫폼 구성 요소가 포함될 수 있습니다.
예제
다음 코드 샘플에서는 ASP 호환 모드를 사용하도록 설정하는 방법을 보여 줍니다.
코드
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
참고 항목
.NET