ASP.NET 구성 시나리오

업데이트: 2007년 11월

서버가 특정 웹 리소스에 대한 요청을 받으면 ASP.NET은 요청된 URL의 가상 디렉터리 경로에 있는 모든 구성 파일을 사용하여 해당 리소스에 대한 구성 설정을 계층 구조적으로 계산합니다. 대부분의 로컬 구성 설정은 부모 구성 파일의 설정을 재정의합니다.

구성 시나리오 1

예를 들면, Application Root 디렉터리가 응용 프로그램 가상 디렉터리인 다음과 같은 실제 파일 구조를 갖는 웹 사이트가 있을 수 있습니다.

일반적으로 마지막 구성 설정이 부모 디렉터리에 있는 동일한 섹션의 설정을 덮어씁니다. 컬렉션 요소의 경우 설정이 재정의되지 않고 컬렉션에 추가됩니다.

참고:

사용자 지정 섹션 처리기에서 다른 상속 스키마를 구현할 수도 있습니다.

SubDir1 디렉터리에는 Web.config 파일이 있고, Application Root 또는 SubDir2 디렉터리에는 구성 파일이 없다고 가정해 봅시다. 이 경우 ASP.NET은 세 가지 구성 파일을 사용하여 SubDir1 디렉터리에 대한 구성 설정을 계산합니다. 최상위 수준 파일은 %systemroot%\Microsoft .NET \Framework\versionNumber\CONFIG 디렉터리에 있는 파일입니다. Machine.config라는 이 파일은 컴퓨터 수준에 있습니다. 지정된 버전의 .NET Framework(versionNumber)를 실행하는 모든 .NET Framework 응용 프로그램이 이 파일에서 설정을 상속합니다. 다음 상위 수준 파일은 같은 위치에 있는 루트 Web.config 파일입니다. 지정된 버전의 .NET Framework를 실행하는 모든 ASP.NET 응용 프로그램이 이 파일의 설정을 상속합니다. 세 번째 구성 파일은 SubDir1 디렉터리에 있는 Web.config 파일입니다.

SubDir1 디렉터리의 Web.config 파일에 enabled 특성이 true로 설정된 anonymousIdentification 요소가 있다고 가정해 봅시다. enabled 특성의 기본 설정은 false입니다. 이 값은 내부 기본값이며 루트 구성 파일에는 지정되지 않습니다. Application Root 또는 SubDir2 디렉터리에는 anonymousIdentification 요소를 수정하는 구성 파일이 없기 때문에 익명 사용자가 이 디렉터리의 ASP.NET 리소스에 액세스할 수 없습니다. 하지만 익명 사용자가 SubDir1 디렉터리의 ASP.NET 리소스에는 액세스할 수 있습니다.

보안 정보:

ASP.NET 구성 시스템은 ASP.NET에서 Aspnet_isapi.dll을 사용하여 처리하도록 등록된 리로스인 ASP.NET 리소스에만 적용됩니다. 기본적으로 구성 시스템에서는 ASP.NET 리소스가 아닌 리소스에 대한 권한을 제공하지 않습니다. 예를 들어, ASP, HTML, TXT, GIF 및 JPEG 파일에는 모든 사용자가 액세스할 수 있습니다. 이전 예제에서 디렉터리 검색을 사용하고 다른 제한이 없는 경우, 응용 프로그램 루트 디렉터리와 SubDir1 및 SubDir2에 있는 ASP.NET 이외의 파일은 모든 사용자가 볼 수 있습니다. ASP.NET 보안에 대한 자세한 내용은 ASP.NET 웹 응용 프로그램 보안을 참조하십시오.

구성 시나리오 2

다음 웹 사이트는 응용 프로그램 가상 디렉터리가 응용 프로그램 루트 디렉터리(MyAppRootDir)로 매핑되는 파일 구조를 가집니다.

MyAppRootDir
    SubDir1
        SubDir1A
    SubDir2

ASP.NET 구성 파일 계층 구조 및 상속의 "ASP.NET 상속 제한" 단원에 설명된 조건인 경우를 제외하고 모든 디렉터리의 구성 설정이 부모 디렉터리에 작성된 설정을 재정의합니다. 예를 들어, 다음 단계를 수행하여 MyAppRootDir 및 SubDir2에 있는 ASP.NET 리소스에 대해서는 모든 사용자에게 액세스를 허용하고 SubDir1 및 SubDir1A에 있는 ASP.NET 리소스에 대해서는 선택된 사용자에게만 액세스를 허용하도록 응용 프로그램 설정을 구성할 수 있습니다.

  1. MyAppRootDir를 그대로 둡니다. MyAppRootDir에 있는 ASP.NET 리소스는 Machine.config 파일에서 기본 설정을 상속하며 이들 중 하나에서 익명 액세스를 허용합니다. 이 단계에서 MyAppRootDir과 세 개의 하위 디렉터리는 이러한 인증 설정을 상속합니다.

  2. 선택된 사용자에게만 SubDir1에 대한 액세스를 허용하도록 인증을 설정한 Web.config 파일을 SubDir1에 배치합니다. 이 설정은 Machine.config 파일의 설정에서 허용한 익명 액세스를 재정의하고 SubDir1A로 하향 상속됩니다. SubDir1과 같은 수준에 있는 SubDir2는 SubDir1의 인증 설정을 상속하지 않습니다.

모든 ASP.NET 응용 프로그램은 루트 웹 수준에 있는 Web.config 파일의 기본 설정을 상속합니다. 이 파일의 보안 구성 섹션에 대한 기본 설정은 모든 사용자가 모든 URL 리소스에 액세스할 수 있도록 허용합니다. 예제의 응용 프로그램 루트 디렉터리에는 보안을 수정하는 구성 파일이 없으므로 모든 사용자가 그 안에 있는 ASP.NET 리소스에 액세스할 수 있습니다. 이것은 해당 디렉터리가 컴퓨터 수준의 구성 파일을 상속하기 때문입니다. SubDir1 디렉터리의 Web.config 파일에 특정 사용자에게만 액세스를 허용하는 보안 구성 섹션이 있는 경우에는 SubDir1A가 해당 설정을 상속합니다. 따라서, 응용 프로그램 루트 디렉터리와 SubDir2에 있는 ASP.NET 리소스에는 모든 사용자가 액세스할 수 있지만, SubDir1과 SubDir1A에 있는 ASP.NET 리소스에는 특정 사용자만 액세스할 수 있습니다.

구성 시나리오 3

액세스 경로를 단순화하고 실제 디렉터리 이름을 숨기는 디렉터리의 이름인 가상 디렉터리에 대한 구성 설정은 실제 디렉터리 구조와 독립적입니다. 따라서 가상 디렉터리는 구성 문제가 발생하지 않도록 주의해서 구성해야 합니다. 예를 들어, 가상 디렉터리를 설정하여 다음과 같은 실제 디렉터리 구조에서 MyResource.aspx라는 ASP.NET 페이지를 검색할 수 있습니다.

MyDir
    SubDir1 (mapped from VDir1)
        SubDir1A (mapped from VDir1A)
            MyResource.aspx
    SubDir2

이 예제에서는 SubDir1과 SubDir1A에 각각 하나의 Web.config 파일이 있습니다. 클라이언트가 URL https://localhost/vdir1/subdir1A/MyResource.aspx를 사용하여 C:\Subdir1\Subdir1A\MyResource.aspx에 액세스하면, 해당 리소스는 Vdir1에서 구성 설정을 상속합니다. 그러나, 클라이언트가 URL https://localhost/vdir1A/MyResource.aspx를 사용하여 동일한 리소스에 액세스하면, 해당 리소스는 Vdir1에서 설정을 상속하지 않습니다. 따라서, 이런 방식으로 가상 디렉터리를 만들면 예기치 않은 결과가 발생하거나 응용 프로그램 오류가 발생할 수 있기 때문에 권장되지 않습니다.

IIS(인터넷 정보 서비스)는 웹을 통해 게시되는 모든 리소스의 웹 서버입니다. ASP.NET 구성 시스템은 Aspnet_isapi.dll을 사용하여 ASP.NET에서 처리하도록 등록된 리소스인 ASP.NET 리소스에만 적용됩니다. 기본적으로 구성 시스템에서는 ASP.NET 리소스가 아닌 리소스에 대한 보안을 제공하지 않습니다. 예를 들어, ASP, HTML, TXT, GIF 및 JPEG 파일에는 모든 사용자가 액세스할 수 있습니다. 이전 예제에서 디렉터리 검색을 사용하고 다른 제한이 없는 경우, 응용 프로그램 루트 디렉터리와 SubDir1 및 SubDir2에 있는 ASP.NET 이외의 파일은 모든 사용자가 볼 수 있습니다.

참고 항목

기타 리소스

ASP.NET 웹 사이트 관리

응용 프로그램 구성