작성자: 월터 올리버
소개
IIS는 특히 ASP.NET 동적 콘텐츠에 대한 향상된 기능을 제공합니다. IIS 7 이상에서는 ASP.NET 런타임 확장성 모델이 핵심 서버에 통합됩니다. 이를 통해 개발자는 하위 수준 C++ API를 사용하는 대신 ASP.NET 2.0 이상의 풍부한 기능과 .NET Framework를 사용하여 IIS를 완전히 확장할 수 있습니다. 기존 ASP.NET 애플리케이션은 .aspx 페이지뿐만 아니라 모든 유형의 콘텐츠에 대해 양식 인증, 역할 및 출력 캐싱과 같은 기존 기능을 사용할 수 있으므로 긴밀한 통합을 활용할 수 있습니다.
IIS와의 ASP.NET 통합의 주요 기능 및 이점에 대한 자세한 내용은 Core Web Server 개요를 참조하세요. .NET Framework 3.5를 설치하는 방법에 대한 자세한 내용은 https://www.microsoft.com/net/ 또는 를 참조하세요.
다음 설정은 호스팅 지침의 "공유 호스팅 아키텍처 계획" 문서에 언급된 공유 호스팅 아키텍처의 일부로 웹 서버에서 사용되었습니다. 이러한 설정을 권장하는 이유 및 구성 방법에 대한 자세한 내용은 가이드를 다운로드합니다.
신뢰 수준 구성
신뢰 수준을 사용하면 ASP.NET 대한 보안 규칙을 정의할 수 있습니다. 디스크에서 읽거나 레지스트리에 액세스하는 등 애플리케이션에서 수행할 수 있는 작업 유형을 정의합니다. 권장되는 신뢰 수준은 보통으로, 많은 일반적인 작업을 허용하지만 많은 위험한 애플리케이션을 제한합니다. 중간 신뢰가 허용하는 것보다 더 많은 작업을 허용해야 하는 경우 사용자 지정 신뢰 수준을 만들어야 합니다.
사용자 지정 신뢰 수준을 구성하고 추가 권한을 구성하려면
%windir%\Microsoft.NET\Framework \{version}\ CONFIG디렉터리로 이동합니다.중간 신뢰 정책 파일(web_mediumtrust.config)을 복사하여 동일한 디렉터리에 새 정책 파일을 만듭니다
%windir%\Microsoft.NET\Framework\{version}\ CONFIG\.파일 이름을 바꿔 사용자 지정 신뢰 수준(예: web_CustomTrust.config)임을 나타냅니다.
새 파일을 열고 web_CustomTrust.configWebPermission 섹션을 찾습니다.
...
<IPermission class="WebPermission"version="1" <ConnectAccess> <URI uri="$OriginHost$" /> </ConnectAccess> </IPermission>...
ConnectAccess 요소가 제거되고 Unrestricted가 true로 설정되도록 WebPermission을 편집합니다.
...
<IPermission class="WebPermission"version="1" Unrestricted="true"/>...
공유 호스팅 환경에 필요한 것으로 알려져 있지 않으면 PrintingPermission 및 EnvironmentPermission을 주석으로 처리합니다.
Web.config 파일의
<securityPolicy>섹션에 아래와 같이 새<trustLevel>요소를 추가합니다.<location allowOverride="true"><system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal" /> <trustLevel name="High" policyFile="web_hightrust.config" /> <trustLevel name="Medium" policyFile="web_mediumtrust.config" /> <trustLevel name="Low" policyFile="web_lowtrust.config" /> <trustLevel name="Minimal" policyFile="web_minimaltrust.config" /> <trustLevel name="Custom" policyFile="web_CustomTrust.config" /> </securityPolicy> <trust level="Custom" originUrl="" /> </system.web> </location>위치 allowOverride 요소를 false로 설정하여 서버의 애플리케이션에서 변경할 수 없도록 신뢰 수준을 잠급니다.
<location allowOverride="false"> <system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal" /> <trustLevel name="High" policyFile="web_hightrust.config" /> <trustLevel name="Medium" policyFile="web_mediumtrust.config" /> <trustLevel name="Low" policyFile="web_lowtrust.config" /> <trustLevel name="Minimal" policyFile="web_minimaltrust.config" /> <trustLevel name="Custom" policyFile="web_CustomTrust.config" /> </securityPolicy> <trust level="Custom" originUrl="" /> </system.web> </location>
원격 파일 서버에서 제공될 콘텐츠 구성
원격 파일 서버에 저장된 콘텐츠로 작동하도록 ASP.NET 구성하는 경우 몇 가지 추가 단계가 필요합니다.
IIS는 원격 파일 서버에서 콘텐츠를 받으면 인증된 사용자를 가장합니다. 이 사용자는 가상 디렉터리 사용자로 명시적으로 설정된 경우이거나, 그렇지 않으면 익명 사용자입니다. IIS 지침에 따르면 애플리케이션 풀 사용자를 익명 사용자로 사용해야 하므로 이 경우 가장된 ID는 애플리케이션 풀 ID입니다. 모든 액세스(익명, 애플리케이션 풀 및 가상 디렉터리)에 하나의 ID를 사용하면 배포가 크게 간소화됩니다.
원격 파일 서버에서 일부 ASP.NET 애플리케이션을 실행하려면 가장한 사용자가 Windows 임시 및 임시 컴파일 디렉터리에 액세스할 수 있어야 합니다.
파일 서버 공유에서 ASP.NET 콘텐츠를 제공하려면
폴더의 ACL을 편집하여
%windir%\Temp디렉터리에 모든 애플리케이션 풀 ID에 대한 권한을 부여합니다.파일 서버 공유에 ASP.NET 적절한 액세스를 허용하는 CAS(코드 액세스 보안) 정책을 추가합니다. 이렇게 하려면 명령 프롬프트를 열고 다음 명령을 실행합니다.
%windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag 1. -url "file://\\remotefileserver\content$\*" FullTrust
가비지 수집기 설정 구성
.NET Framework는 자동 가비지 수집을 사용하여 모든 애플리케이션의 메모리를 관리합니다. 가비지 수집기(GC)가 충분한 가비지가 누적되었고 이를 수행하는 것이 효율적이라고 판단할 때, 메모리를 해제하기 위해 수집 작업을 수행합니다. 이 프로세스는 완전히 자동이지만 프로세스를 보다 효율적으로 만들 수 있는 설정이 있습니다.
GC에 대한 자세한 내용은 "5장 - 관리 코드 성능 향상"을 참조하고 가비지 수집 설명 섹션을 참고하세요.
워크스테이션 가비지 수집기 활성화
기본적으로 서버 GC는 .NET Framework에서 속도 및 CPU 로드를 최적화하는 데 사용됩니다. 메모리가 여러 활성 사이트에 대한 제약 조건인 공유 호스팅의 경우 워크스테이션 GC를 사용해야 합니다. 워크스테이션 GC는 메모리를 최적화합니다.
이 설정에 대한 자세한 내용은 "Windows Server 2003을 실행하는 컴퓨터에서 ASP.NET 사용하는 웹 애플리케이션을 호스트할 때 오류 메시지가 표시되거나 컴퓨터가 응답하지 않을 수 있습니다." (https://support.microsoft.com/kb/911716)를 참조하세요.
동시 가비지 수집기 사용 안 함
GC에는 서버, 동시 사용이 설정된 워크스테이션 및 동시 사용 안 함으로 설정된 워크스테이션의 3가지 버전이 있습니다. 동시 워크스테이션 GC는 클라이언트 시나리오를 위한 것입니다. 서버 GC가 메모리 비용으로 처리량 및 확장성을 우선시하는 것처럼 동시 워크스테이션 GC는 메모리 비용으로 응답성을 우선합니다. 메모리를 최적화하려면 워크스테이션 GC를 사용할 때 동시 가비지 수집을 사용하지 않도록 설정합니다.
gcTrimCommitOnLowMemory 설정 사용
GC는 향후 할당을 위해 메모리를 유지하므로 커밋된 공간은 엄격하게 필요한 공간보다 더 많을 수 있습니다. 시스템 메모리에 부하가 많은 경우 상황에 맞게 이 공간을 줄일 수 있습니다. 이 설정을 사용하도록 설정하면 GC는 시스템 메모리 로드를 평가하고 부하가 90%도달하면 트리밍 모드로 전환됩니다. 부하가 85% 아래로 떨어질 때까지 트리밍 모드가 유지됩니다. 조건이 허용되면 GC는 설정이 애플리케이션에 도움이 되지 않는다고 결정하고 무시할 수 있습니다.
GC 설정을 구성하려면
%windir%\Microsoft.NET\Framework\{version}디렉터리로 이동합니다.aspnet.config 파일을 열고 요소를 찾습니다
<gcServer>. 요소가 없으면 3단계를 사용하여 항목을 만듭니다....
<configuration> <runtime> <gcServer enabled="true"/> </runtime> </configuration> ...섹션 내에 다음 세 가지 요소를 추가합니다
<runtime>....
<configuration> <runtime> <gcServer enabled="false" /><gcConcurrent enabled="false" /> <gcTrimCommitOnLowMemory enabled="true" /> </runtime> </configuration> ...파일을 저장하고 닫습니다.