ASP.NET 2.0/3.5 공유 호스팅 구성
작성자 : Walter Oliver
소개
IIS는 동적 콘텐츠, 특히 ASP.NET 대한 향상된 기능을 제공합니다. IIS 7 이상에서는 ASP.NET 런타임 확장성 모델이 핵심 서버에 통합됩니다. 이를 통해 개발자는 하위 수준 C++ API를 사용하는 대신 ASP.NET 2.0 이상의 풍부한 기능과 .NET Framework 사용하여 IIS를 완전히 확장할 수 있습니다. 기존 ASP.NET 애플리케이션은 .aspx 페이지뿐만 아니라 모든 유형의 콘텐츠에 대해 양식 인증, 역할 및 출력 캐싱과 같은 기존 기능을 사용할 수 있으므로 긴밀한 통합을 활용할 수 있습니다.
IIS와의 ASP.NET 통합의 몇 가지 주요 기능 및 이점에 대해 자세히 알아보려면 핵심 웹 서버 개요를 참조하세요. .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.config WebPermission 섹션을 찾습니다.
...
<IPermission class="WebPermission"
version="1" <ConnectAccess> <URI uri="$OriginHost$" /> </ConnectAccess> </IPermission>
...
ConnectAccess 요소가 제거되고 제한 없음이 true로 설정되도록 WebPermission을 편집합니다.
...
<IPermission class="WebPermission"
version="1" Unrestricted="true"/>
...
공유 호스팅 환경에 필요하다고 알려진 경우가 아니면 PrintingPermission 및 EnvironmentPermission을 주석으로 처리합니다.
<trustLevel>
아래와 같이 새 요소를<securityPolicy>
Web.config 파일의 섹션에 추가합니다.<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는 속도 및 CPU 로드를 최적화하기 위해 .NET Framework 사용됩니다. 메모리가 많은 활성 사이트에 대한 제약 조건인 공유 호스팅의 경우 Workstation GC를 사용해야 합니다. 워크스테이션 GC는 메모리를 최적화합니다.
이 설정에 대한 자세한 내용은 "Windows Server 2003을 실행하는 컴퓨터에서 ASP.NET 사용하는 웹 애플리케이션을 호스트할 때 오류 메시지가 표시되거나 컴퓨터가 응답하지 않을 수 있습니다."https://support.microsoft.com/kb/911716
()를 참조하세요.
동시 가비지 수집기 사용 안 함
GC에는 서버, 동시 사용이 설정된 워크스테이션 및 동시 사용 안 함으로 설정된 워크스테이션의 세 가지 버전이 있습니다. 동시 워크스테이션 GC는 클라이언트 시나리오를 위한 것입니다. 서버 GC가 메모리 비용으로 처리량 및 확장성의 우선 순위를 지정하는 것처럼 동시 워크스테이션 GC는 메모리 비용으로 응답성의 우선 순위를 지정합니다. 메모리를 최적화하려면 Workstation 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> ...
파일을 저장하고 닫습니다.