ASP.NET에서 IIS 디렉터리에 대한 액세스 거부

이 백서에서는 ASP.NET 애플리케이션에 대한 요청이 " DirectoryName 디렉터리에 대한 액세스 거부" 오류를 반환하는 경우 수행해야 하는 작업을 설명합니다. 디렉터리 변경 모니터링을 시작하지 못했습니다."

ASP.NET 1.0 및 ASP.NET 1.1에 적용됩니다.

ASP.NET V1 RTM은 이제 로컬 컴퓨터에서 "ASPNET" 계정으로 등록된 덜 권한 있는 Windows 계정을 사용하여 실행됩니다.

일부 잠긴 시스템에서 이 계정에는 기본적으로 웹 사이트의 콘텐츠 디렉터리, 애플리케이션 루트 디렉터리 또는 웹 사이트 루트 디렉터리에 대한 읽기 보안 액세스 권한이 없을 수 있습니다. 이 경우 지정된 웹 애플리케이션에서 페이지를 요청할 때 다음 오류가 발생합니다.

액세스 거부라는 오류 페이지의 브라우저 보기 스크린샷

이 문제를 해결하려면 적절한 디렉터리에 대한 보안 권한을 변경해야 합니다.

특히 ASP.NET 웹 사이트 루트에 대한 ASPNET 계정에 대한 읽기, 실행 및 목록 액세스(예: c:\inetpub\wwwroot 또는 IIS에서 구성했을 수 있는 대체 사이트 디렉터리), 구성 파일 변경을 모니터링하기 위해 콘텐츠 디렉터리 및 애플리케이션 루트 디렉터리가 필요합니다. 애플리케이션 루트는 IIS 관리 도구(inetmgr)의 애플리케이션 가상 디렉터리에 연결된 폴더 경로에 해당합니다.

예를 들어 wwwroot 폴더 아래의 다음 애플리케이션 계층 구조를 고려합니다.

C:\inetpub\wwwroot\myapp\default.aspx

이 예제에서는 ASPNET 계정에 myapp 및 wwwroot 디렉터리의 콘텐츠에 대해 위에서 정의한 읽기 권한이 필요합니다. 루트 폴더에 상속된 단일 ACL은 중첩된 경우 두 디렉터리에 대해 선택적으로 사용할 수도 있습니다.

디렉터리에 권한을 추가하려면 다음 단계를 수행합니다.

  • Windows 탐색기를 사용하여 디렉터리로 이동합니다.
  • 디렉터리 폴더를 마우스 오른쪽 단추로 클릭하고 "속성"을 선택합니다.
  • 속성 대화 상자에서 "보안" 탭으로 이동합니다.
  • "추가" 단추를 클릭하고 컴퓨터 이름 뒤에 ASPNET 계정 이름을 입력합니다. 예를 들어 "webdev"라는 컴퓨터에서 webdev\ASPNET을 입력하고 "확인"을 누릅니다.
  • ASPNET 계정에 "읽기 & 실행", "폴더 내용 나열" 및 "읽기" 확인란이 선택되어 있는지 확인합니다.
  • 확인을 눌러 대화 상자를 해제하고 변경 내용을 저장합니다.

속성 대화 상자의 스크린샷 O K가 선택되었습니다.

원하는 경우 스크립트 또는 Windows와 함께 제공되는 "cacls.exe" 도구를 사용하여 이러한 변경 내용을 자동화할 수 있습니다. ASPNET 계정에 대한 자세한 내용은 FAQ 문서를 참조하세요.

지정된 웹 애플리케이션이 특정 폴더 또는 파일에 대한 쓰기 또는 수정 권한을 사용하는 경우 동일한 절차에 따라 "쓰기" 및/또는 "수정" 확인란을 선택하여 이 권한을 부여할 수 있습니다.

모든 사용자 또는 사용자 그룹이 이러한 디렉터리(기본 구성)에 대한 읽기 권한을 허용하는 컴퓨터에서는 문제가 발생하지 않으며 위의 단계가 필요하지 않습니다.