구성 구조
ASP.NET 구성 파일은 Web.config 파일이라고 하며 ASP.NET 응용 프로그램 내의 여러 디렉터리에 나타날 수 있습니다. ASP.NET 구성 계층 구조에는 다음과 같은 특징이 있습니다.
구성 파일이 있는 디렉터리와 모든 하위 디렉터리의 리소스에 적용되는 구성 파일을 사용합니다.
적절한 범위(전체 컴퓨터, 모든 웹 응용 프로그램, 단일 응용 프로그램 또는 해당 응용 프로그램 내의 하위 디렉터리)를 제공하는 위치에 구성 데이터를 배치할 수 있습니다.
구성 계층의 상위 수준에서 상속된 구성 설정을 재정의할 수 있습니다. 또한 하위 수준 구성 설정으로 덮어쓰여지는 것을 방지하기 위해 구성 설정을 잠글 수 있습니다.
구성 설정의 논리적 그룹을 섹션으로 구성합니다.
구성 상속
모든 .NET Framework 응용 프로그램은 systemrootMicrosoft .NETFrameworkversionNumberCONFIGMachine.config라는 파일에서 기본 구성 설정과 기본값을 상속합니다. Machine.config 파일은 서버 수준 구성 설정에 사용됩니다. 이러한 설정 중 일부는 계층 구조의 아래쪽에 있는 구성 파일에서 재정의될 수 없습니다.
.NET 클라이언트 애플리케이션(콘솔 및 Windows 애플리케이션)은 ApplicationName.config라는 구성 파일을 사용하여 상속된 설정을 재정의합니다. ASP.NET 응용 프로그램은 Web.config라는 구성 파일을 사용하여 상속된 설정을 재정의합니다.
ASP.NET 구성 계층 구조의 루트는 루트 Web.config 파일이라는 파일로, Machine.config 파일과 동일한 디렉터리에 있습니다. 루트 Web.config 파일은 Machine.config 파일의 모든 설정을 상속합니다. 루트 Web.config 파일에는 특정 버전의 .NET Framework를 실행하는 모든 ASP.NET 응용 프로그램에 적용되는 설정이 포함되어 있습니다. 모든 ASP.NET 응용 프로그램은 루트 Web.config 파일에서 기본 구성 설정을 상속하므로 기본 설정을 재정의하는 설정에 대한 Web.config 파일만 생성하면 됩니다.
컬렉션 요소의 상속
네임스페이스 요소 및 customErrors 요소와 같은 일부 구성 요소는 컬렉션입니다.
컬렉션에서 구성 설정은 일반적으로 하위 요소 추가를 통해 컬렉션에 추가되고, 하위 요소 제거를 통해 키 이름으로 제거되거나 하위 요소 지우기를 통해 전체 컬렉션을 지울 수 있습니다. 중복이 허용되지 않는 한 하위 프로필에 추가된 설정은 상위 프로필의 동일한 키 이름으로 설정을 재정의합니다.
이전 버전의 .NET Framework에 있던 일부 컬렉션에서는 하위 요소 추가에 다른 요소 이름을 사용했습니다
.
예를 들어 customErrors 요소는 error 하위 요소를 사용하여 컬렉션에 사용자 지정 오류를 추가합니다.
SubDir1 디렉터리에 존재하지 않는 파일에 대한 요청이 수신되면 ASP.NET은 구성 계층 구조 검색을 시작하고 가장 로컬인 Web.config 파일에서 시작합니다(존재하는 경우 현재 디렉터리에 있을 수도 있고 다른 디렉터리에 있을 수도 있음). 현재 디렉터리에 있을 수 있음). ASP.NET은 customErrors의 오류 요소(ASP.NET 설정 스키마) 요소에서 "404"와 동일한 statusCode 특성을 검색합니다. ASP.NET이 구성 설정에서 404 오류를 발견하면 리디렉션 특성의 URL이 응답으로 반환됩니다.
구성 설정 범위
구성 설정에는 다양한 범위가 있습니다. 일부는 전역 범위를 갖고 일부는 응용 프로그램 범위(루트 Web.config 파일 또는 Machine.config 파일)에만 유효합니다.
구성 섹션의 범위는 Machine.config 파일에 있는 configSections 섹션 요소(일반 설정 스키마) 요소의 AllowDefinition 특성에서 ASP.NET에 포함된 모든 섹션에 대해 정의됩니다. 예를 들어 인증 요소(ASP.NET 설정 스키마) 요소에는 MachineToApplication 요소의 allowedDefinition 특성이 있습니다. 즉, 응용 프로그램 수준 Machine.config 파일, 루트 Web.config 파일 및 Web.config 파일에서 인증 요소를 설정할 수 있습니다. 하위 디렉터리 수준에서 설정되면 오류가 발생합니다. 섹션에 대해 AllowDefinition 속성이 정의되지 않은 경우 기본값은 Everywhere입니다.
ASP.NET 구성 설정 및 일반 구성 설정(ASP.NET)의 각 요소에 대한 구성 설정 범위는 요소 정보 테이블의 구성 가능 옆에 나열됩니다.
다음 표에는 구성 계층 구조의 각 파일 수준, 각 파일의 이름, 각 파일의 중요한 상속 특성에 대한 설명이 나열되어 있습니다.
구성 수준 | 파일 이름 | 파일 설명 |
서버 | Machine.config | Machine.config 파일에는 서버의 모든 웹 응용 프로그램에 대한 ASP.NET 스키마가 포함되어 있습니다. 이 파일은 구성 병합 계층 구조의 최상위 수준에 있습니다. |
루트 웹 | Web.config | 서버의 Web.config 파일은 Machine.config 파일과 동일한 디렉터리에 저장되며 대부분의 system.web 구성 섹션에 대한 기본값을 포함합니다. 런타임 시 이 파일은 구성 계층 구조의 맨 위에서 두 번째 수준에서 병합됩니다. |
사이트 | Web.config | 특정 사이트에 대한 Web.config 파일에는 해당 사이트에 적용되고 해당 사이트의 모든 ASP.NET 응용 프로그램 및 하위 디렉터리로 상속되는 설정이 포함되어 있습니다. |
ASP.NET 응용 프로그램 루트 | Web.config | 특정 ASP.NET 응용 프로그램에 대한 Web.config 파일은 응용 프로그램의 루트 디렉터리에 있으며 여기에는 설정이 포함되어 있습니다. |
ASP.NET 응용 프로그램 하위 디렉터리 | Web.config | 응용 프로그램 하위 디렉터리의 Web.config 파일에는 이 하위 디렉터리에 적용되고 해당 분기의 모든 하위 디렉터리로 상속되는 설정이 포함되어 있습니다. |
클라이언트 응용 프로그램 디렉터리 | ApplicationName.config ApplicationName.config | 파일에는 Windows 클라이언트 응용 프로그램(웹 응용 프로그램 아님)에 대한 설정이 포함되어 있습니다. |
ProcessModel 요소
processModel 요소(ASP.NET 설정 스키마) 요소는 서버(서버의 모든 ASP.NET 응용 프로그램 포함)에 사용되는 처리 모델을 구성합니다. 따라서 processModel 설정은 Machine.config 파일에만 배치할 수 있으며 Web.config 파일의 설정으로 재정의될 수 없습니다.
processModel 요소에 대한 변경 사항은 다른 구성 요소와 같이 변경 사항을 설정한 직후가 아니라 작업자 프로세스가 다시 시작된 후에만 적용됩니다.
참고
ASP.NET이 IIS(인터넷 정보 서비스) 6.0에서 작업자 프로세스 격리 모드로 실행되면 IIS 6.0 프로세스 모델이 사용되며 Machine.config 파일의 processModel 섹션에 있는 설정이 무시됩니다. 프로세스 ID, 라운드 로빈 또는 기타 프로세스 모델 값을 구성하려면 IIS 관리자를 사용하여 응용 프로그램의 IIS 작업자 프로세스를 구성하십시오.
구성 설정의 런타임 계산
서버가 특정 웹 리소스에 대한 요청을 받으면 ASP.NET은 요청된 URL의 가상 디렉터리 경로에 있는 모든 구성 파일을 사용하여 해당 리소스에 대한 구성 설정을 계층적으로 계산합니다. 로컬 구성 설정은 상위 구성 파일의 설정보다 우선 적용됩니다.
이러한 설정은 한 번 계산된 후 후속 요청을 위해 캐시됩니다. ASP.NET은 파일의 변경 사항을 자동으로 모니터링하고 파일 계층 구조 내의 구성 파일이 변경되면 캐시를 다시 계산합니다. 서버가 특정 URL에 대한 요청을 받으면 ASP.NET은 캐시의 구성 설정 계층 구조를 사용하여 요청된 리소스를 찾습니다.
restartOnExternalChanges="false" 특성이 구성 섹션 요소에 포함되어 있지 않거나 구성 설정이 configSource 특성을 사용하여 Web.config 파일에 연결된 별도의 파일에 포함되어 있지 않으면 구성이 변경될 때 응용 프로그램이 다시 시작됩니다.
단일 파일에 구성된 여러 ASP.NET 리소스
단일 Web.config 파일에 여러 위치에 대한 설정을 저장하면 ISP 설정에서 많은 구성 설정을 관리하거나 클라이언트 웹 사이트를 관리할 때 유용할 수 있습니다. 위치 요소의 경로 특성을 사용하면 응용 프로그램 하위 디렉터리에 저장된 여러 특정 ASP.NET 리소스를 구성할 수 있습니다.
위치 요소를 사용하는 방법에 대한 자세한 내용은 방법: 위치 설정을 사용하여 특정 디렉터리 구성을 참조하세요.
가상 디렉터리의 설정이 실제 디렉터리의 설정과 충돌합니다. 가상 디렉터리의
구성 설정은 실제 디렉터리 구조와 독립적이므로 구성 문제를 방지하려면 가상 디렉터리를 주의 깊게 구성해야 합니다. 예를 들어 다음과 같은 물리적 디렉터리 구조를 가진 MyResource.aspx라는 ASP.NET 파일이 있을 수 있습니다.
C:
Subdir1
Subdir2
MyResource.aspx
또한 Subdir1에 구성 파일이 있고, c:Subdir1에 매핑된 Vdir1이라는 가상 디렉터리와 c:Subdir1Subdir2에 매핑된 Vdir1이라는 가상 디렉터리가 있을 수 있습니다. Vdir2의 디렉토리. 클라이언트가 URL http://localhost/vdir1/subdir2/MyResource.aspx를 사용하여 물리적으로 c:Subdir1Subdir2MyResource.aspx에 있는 리소스에 액세스하는 경우 리소스는 Vdir1의 구성 설정을 상속합니다. 그러나 클라이언트가 URL http://localhost/vdir2/MyResource.aspx를 사용하여 동일한 리소스에 액세스하는 경우 리소스는 Vdir1의 설정을 상속하지 않습니다. 이런 방식으로 가상 디렉터리를 만들면 예기치 않은 결과가 발생하거나 응용 프로그램이 실패할 수도 있습니다. 가상 디렉터리를 중첩하지 않는 것이 좋으며, 중첩해야 하는 경우 Web.config 파일을 하나만 사용하는 것이 좋습니다.
ASP.NET 상속 제한
응용 프로그램 성능을 향상시키고 높은 안정성을 유지하며 관리를 단순화하기 위해 구성 설정의 상속을 제한할 수 있습니다. 제한 기능은allowOverride, lockAttributes, lockAllAttributesExcept, lockAllElementsExcept, lockItem 및 lockElements 속성에 의해 제어됩니다. 이러한 속성에 대한 자세한 내용은 msdn을 참조하세요.