Visual Studio를 사용하여 웹 배포 ASP.NET: 폴더 권한 설정

작성자 : Tom Dykstra

시작 프로젝트 다운로드

이 자습서 시리즈에서는 Visual Studio 2012 또는 Visual Studio 2010을 사용하여 ASP.NET 웹 애플리케이션을 Azure App Service Web Apps 또는 타사 호스팅 공급자에 배포(게시)하는 방법을 보여 줍니다. 시리즈에 대한 자세한 내용은 시리즈의 첫 번째 자습서를 참조하세요.

개요

이 자습서에서는 애플리케이션이 해당 폴더에 로그 파일을 만들 수 있도록 배포된 웹 사이트의 Elmah 폴더에 대한 폴더 권한을 설정합니다.

Visual Studio 개발 서버(Cassini) 또는 IIS Express 사용하여 Visual Studio에서 웹 애플리케이션을 테스트하는 경우 애플리케이션은 ID로 실행됩니다. 개발 컴퓨터의 관리자일 가능성이 높으며 모든 폴더의 파일에 대해 모든 작업을 수행할 수 있는 모든 권한이 있습니다. 그러나 애플리케이션이 IIS에서 실행되면 사이트가 할당된 애플리케이션 풀에 대해 정의된 ID로 실행됩니다. 일반적으로 권한이 제한된 시스템 정의 계정입니다. 기본적으로 웹 애플리케이션의 파일 및 폴더에 대한 읽기 및 실행 권한이 있지만 쓰기 권한이 없습니다.

이는 애플리케이션이 파일을 만들거나 업데이트하는 경우 문제가 되며, 이는 웹 애플리케이션에서 일반적으로 필요합니다. Contoso University 애플리케이션에서 Elmah는 오류에 대한 세부 정보를 저장하기 위해 Elmah 폴더에 XML 파일을 만듭니다. Elmah와 같은 항목을 사용하지 않더라도 사이트에서 사용자가 파일을 업로드하거나 사이트의 폴더에 데이터를 쓰는 다른 작업을 수행할 수 있습니다.

미리 알림: 자습서를 진행하는 동안 오류 메시지가 표시되거나 작동하지 않는 경우 문제 해결 페이지를 검사 합니다.

테스트 오류 로깅 및 보고

IIS에서 애플리케이션이 제대로 작동하지 않는 방법을 확인하려면(Visual Studio에서 테스트했을 때 수행되었지만) Elmah에서 일반적으로 기록되는 오류를 발생시킨 다음 Elmah 오류 로그를 열어 세부 정보를 확인할 수 있습니다. Elmah가 XML 파일을 만들고 오류 세부 정보를 저장할 수 없는 경우 빈 오류 보고서가 표시됩니다.

브라우저를 열고 로 http://localhost/ContosoUniversity이동한 다음 Studentsxxx.aspx와 같은 잘못된 URL을 요청합니다. Web.config 파일의 설정이 "RemoteOnly"이고 IIS를 로컬로 실행 중이므로 GenericErrorPage.aspx 페이지 대신 시스템 생성 오류 페이지 customErrors 가 표시됩니다.

HTTP 404 오류 페이지

이제 Elmah.axd를 실행하여 오류 보고서를 확인합니다. 관리자 계정 자격 증명("admin" 및 "devpwd")으로 로그인한 후 Elmah가 Elmah 폴더에 XML 파일을 만들 수 없기 때문에 빈 오류 로그 페이지가 표시됩니다.

오류 로그 비어 있음

Elmah 폴더에 대한 쓰기 권한 설정

폴더 권한을 수동으로 설정하거나 배포 프로세스의 자동 부분으로 만들 수 있습니다. 자동으로 만들려면 복잡한 MSBuild 코드가 필요하며, 처음 배포할 때만 이 작업을 수행해야 하므로 다음 단계에서 수동으로 수행해야 합니다. (배포 프로세스의 이 부분을 만드는 방법에 대한 자세한 내용은 Sayed Hashimi의 블로그 에서 웹 게시에 대한 폴더 권한 설정을 참조하세요.)

  1. 파일 탐색기C:\inetpub\wwwroot\ContosoUniversity로 이동합니다. Elmah 폴더를 마우스 오른쪽 단추로 클릭하고 속성을 선택한 다음 보안 탭을 선택합니다.

  2. 편집을 클릭합니다.

  3. Elmah에 대한 사용 권한 대화 상자에서 DefaultAppPool을 선택한 다음 허용 열에서쓰기 검사 상자를 선택합니다.

    ELMAH 폴더에 대한 권한

    (그룹 또는 사용자 이름 목록에 DefaultAppPool이 표시되지 않는 경우 이 자습서에 지정된 방법 이외의 다른 방법을 사용하여 컴퓨터에 IIS 및 ASP.NET 4를 설정했을 수 있습니다. 이 경우 Contoso University 애플리케이션에 할당된 애플리케이션 풀에서 사용되는 ID를 확인하고 해당 ID에 쓰기 권한을 부여합니다. 이 자습서의 끝에 있는 애플리케이션 풀 ID에 대한 링크를 참조하세요.) 두 대화 상자에서 확인을 클릭합니다.

오류 로깅 및 보고 다시 테스트

동일한 방식으로 다시 오류를 발생시켜 테스트하고(잘못된 URL 요청) 오류 로그 페이지를 실행합니다. 이번에는 페이지에 오류가 표시됩니다.

ELMAH 오류 로그 페이지

요약

이제 Contoso University가 로컬 컴퓨터의 IIS에서 올바르게 작동하도록 하는 데 필요한 모든 작업을 완료했습니다. 다음 자습서에서는 Azure에 배포하여 사이트를 공개적으로 사용할 수 있도록 합니다.

추가 정보

이 예제에서는 Elmah가 로그 파일을 저장할 수 없는 이유가 상당히 명확했습니다. 문제의 원인이 명확하지 않은 경우 IIS 추적을 사용할 수 있습니다. IIS.net 사이트의 IIS 7에서 추적을 사용하여 실패한 요청 문제 해결 을 참조하세요.

애플리케이션 풀 ID에 권한을 부여하는 방법에 대한 자세한 내용은 IIS.net 사이트의 파일 시스템 ACL을 통해 IIS의애플리케이션 풀 ID 및 보안 콘텐츠를 참조하세요.