Visual Studio를 사용 하 여 ASP.NET 웹 배포: 폴더 사용 권한 설정ASP.NET Web Deployment using Visual Studio: Setting Folder Permissions

만든 사람 Tom Dykstraby Tom Dykstra

시작 프로젝트 다운로드Download Starter Project

이 자습서 시리즈에서는 Visual Studio 2012 또는 Visual Studio 2010를 사용 하 여 Azure App Service Web Apps 또는 타사 호스팅 공급자에 게 ASP.NET 웹 응용 프로그램을 배포 (게시) 하는 방법을 보여 줍니다.This tutorial series shows you how to deploy (publish) an ASP.NET web application to Azure App Service Web Apps or to a third-party hosting provider, by using Visual Studio 2012 or Visual Studio 2010. 계열에 대 한 자세한 내용은 시리즈의 첫 번째 자습서를 참조 하십시오.For information about the series, see the first tutorial in the series.

개요Overview

이 자습서에서는 응용 프로그램이 해당 폴더에 로그 파일을 만들 수 있도록 배포 된 웹 사이트의 Elmah 폴더에 대 한 폴더 권한을 설정 합니다.In this tutorial, you set folder permissions for the Elmah folder in the deployed web site so that the application can create log files in that folder.

Visual Studio 개발 서버 (Cassini) 또는 IIS Express를 사용 하 여 Visual Studio에서 웹 응용 프로그램을 테스트 하는 경우 응용 프로그램은 사용자의 id로 실행 됩니다.When you test a web application in Visual Studio using the Visual Studio Development Server (Cassini) or IIS Express, the application runs under your identity. 사용자는 개발 컴퓨터의 관리자 이며 모든 폴더의 모든 파일에 대해 모든 작업을 수행할 수 있는 권한이 있어야 합니다.You are most likely an administrator on your development computer and have full authority to do anything to any file in any folder. 그러나 응용 프로그램이 IIS에서 실행 되는 경우 사이트에 할당 된 응용 프로그램 풀에 대해 정의 된 id로 실행 됩니다.But when an application runs under IIS, it runs under the identity defined for the application pool that the site is assigned to. 이는 일반적으로 권한이 제한 된 시스템 정의 계정입니다.This is typically a system-defined account that has limited permissions. 기본적으로 웹 응용 프로그램의 파일 및 폴더에 대 한 읽기 및 실행 권한이 있지만 쓰기 권한이 없습니다.By default it has read and execute permissions on your web application's files and folders, but it doesn't have write access.

응용 프로그램에서 파일을 만들거나 업데이트 하는 경우이 문제가 발생 합니다 .이는 웹 응용 프로그램에서 일반적으로 필요 합니다.This becomes an issue if your application creates or updates files, which is a common need in web applications. Contoso 대학 응용 프로그램에서 Elmah는 오류에 대 한 세부 정보를 저장 하기 위해 elmah 폴더에 XML 파일을 만듭니다.In the Contoso University application, Elmah creates XML files in the Elmah folder in order to save details about errors. Elmah와 같은 항목을 사용 하지 않더라도 사이트에서 사용자가 파일을 업로드 하거나 사이트의 폴더에 데이터를 기록 하는 기타 작업을 수행할 수 있습니다.Even if you don't use something like Elmah, your site might let users upload files or perform other tasks that write data to a folder in your site.

미리 알림: 자습서를 진행할 때 오류 메시지가 표시 되거나 문제가 해결 되지 않으면 문제 해결 페이지를 확인 해야 합니다.Reminder: If you get an error message or something doesn't work as you go through the tutorial, be sure to check the troubleshooting page.

오류 로깅 및 보고 테스트Test error logging and reporting

응용 프로그램이 IIS에서 제대로 작동 하지 않는 방법을 확인 하려면 (Visual Studio에서 테스트 했을 경우에도) 일반적으로 Elmah에서 기록 되는 오류를 발생 시킨 다음 Elmah 오류 로그를 열어 세부 정보를 확인 합니다.To see how the application doesn't work correctly in IIS (although it did when you tested it in Visual Studio), you can cause an error that would normally be logged by Elmah, and then open the Elmah error log to see the details. Elmah가 XML 파일을 만들고 오류 정보를 저장할 수 없는 경우 빈 오류 보고서가 표시 됩니다.If Elmah was unable to create an XML file and store the error details, you see an empty error report.

브라우저를 열고 http://localhost/ContosoUniversity로 이동한 다음 Studentsxxx와 같은 잘못 된 URL을 요청 합니다.Open a browser and go to http://localhost/ContosoUniversity, and then request an invalid URL like Studentsxxx.aspx. Web.config 파일의 customErrors 설정이 "RemoteOnly"이 고 IIS를 로컬로 실행 하므로 Genericerrorpage .aspx 페이지 대신 시스템 생성 오류 페이지가 표시 됩니다.You see a system-generated error page instead of the GenericErrorPage.aspx page because the customErrors setting in the Web.config file is "RemoteOnly" and you are running IIS locally:

HTTP 404 오류 페이지

이제 Elmah 를 실행 하 여 오류 보고서를 확인 합니다.Now run Elmah.axd to see the error report. 관리자 계정 자격 증명 ("admin" 및 "devpwd")을 사용 하 여 로그인 한 후에는 Elmah가 elmah 폴더에 XML 파일을 만들 수 없기 때문에 빈 오류 로그 페이지가 표시 됩니다.After you log in with the administrator account credentials ("admin" and "devpwd"), you see an empty error log page because Elmah was unable to create an XML file in the Elmah folder:

오류 로그가 비어 있습니다.

Elmah 폴더에 대 한 쓰기 권한 설정Set write permission on the Elmah folder

폴더 권한은 수동으로 설정 하거나 배포 프로세스의 자동으로 만들 수 있습니다.You can set folder permissions manually or you can make it an automatic part of the deployment process. 이러한 작업을 자동으로 수행 하려면 복잡 한 MSBuild 코드가 필요 합니다 .이 작업은 처음 배포할 때만 수행 하면 됩니다. 다음 단계에서는 수동으로 작업을 수행 하는 방법을 설명 합니다.Making it automatic requires complex MSBuild code, and since you only have to do this the first time you deploy, the following steps how to do it manually. 배포 프로세스의이 부분을 만드는 방법에 대 한 자세한 내용은 Sayed Hashimi의 웹 게시에 대 한 폴더 권한 설정 블로그를 참조 하세요.(For information about how to make this part of the deployment process, see Setting Folder Permissions on Web Publish on Sayed Hashimi's blog.)

  1. 파일 탐색기에서 C:\inetpub\wwwroot\ContosoUniversity로 이동 합니다.In File Explorer, navigate to C:\inetpub\wwwroot\ContosoUniversity. Elmah 폴더를 마우스 오른쪽 단추로 클릭 하 고 속성을 선택한 다음 보안 탭을 선택 합니다.Right-click the Elmah folder, select Properties, and then select the Security tab.

  2. 편집을 클릭합니다.Click Edit.

  3. Elmah에 대 한 사용 권한 대화 상자에서 DefaultAppPool을 선택 하 고 허용 열에서 쓰기 확인란을 선택 합니다.In the Permissions for Elmah dialog box, select DefaultAppPool, and then select the Write check box in the Allow column.

    ELMAH 폴더에 대 한 사용 권한

    그룹 또는 사용자 이름 목록에 DefaultAppPool 가 표시 되지 않으면이 자습서에 지정 된 것과 다른 방법을 사용 하 여 컴퓨터에서 IIS 및 ASP.NET 4를 설정 하는 것입니다.(If you don't see DefaultAppPool in the Group or user names list, you probably used some other method than the one specified in this tutorial to set up IIS and ASP.NET 4 on your computer. 이 경우 Contoso 대학 응용 프로그램에 할당 된 응용 프로그램 풀에서 사용 되는 id를 확인 하 고 해당 id에 대 한 쓰기 권한을 부여 합니다.In that case, find out what identity is used by the application pool assigned to the Contoso University application, and grant write permission to that identity. 이 자습서의 끝부분에 있는 응용 프로그램 풀 id에 대 한 링크를 참조 하세요.) 두 대화 상자에서 확인을 클릭 합니다.See the links about application pool identities at the end of this tutorial.) Click OK in both dialog boxes.

오류 로깅 및 보고 다시 테스트Retest error logging and reporting

동일한 방식으로 오류를 다시 발생 시켜 테스트 합니다 (잘못 된 URL 요청) 하 고 오류 로그 페이지를 실행 합니다.Test by causing an error again in the same way (request a bad URL) and run the Error Log page. 이번에는 페이지에 오류가 표시 됩니다.This time the error appears on the page.

ELMAH 오류 로그 페이지

요약Summary

이제 Contoso 대학이 로컬 컴퓨터의 IIS에서 올바르게 작동 하는 데 필요한 모든 작업을 완료 했습니다.You have now completed all of the tasks necessary to get Contoso University working correctly in IIS on your local computer. 다음 자습서에서는 Azure에 배포 하 여 사이트를 공개적으로 사용할 수 있도록 설정 합니다.In the next tutorial, you will make the site publicly available by deploying it to Azure.

자세한 정보More information

이 예제에서 Elmah가 로그 파일을 저장할 수 없는 이유는 매우 명확 합니다.In this example, the reason why Elmah was unable to save log files was fairly obvious. 문제의 원인이 명확 하지 않은 경우에 IIS 추적을 사용할 수 있습니다. IIS.net 사이트에서 IIS 7에서 추적을 사용 하 여 실패 한 요청 문제 해결 을 참조 하세요.You can use IIS tracing in cases where the cause of the problem is not so obvious; see Troubleshooting Failed Requests Using Tracing in IIS 7 on the IIS.net site.

응용 프로그램 풀 id에 대 한 사용 권한을 부여 하는 방법에 대 한 자세한 내용은 IIS.net 사이트의 파일 시스템 acl을 통해 IIS의 응용 프로그램 풀 Id 및 보안 콘텐츠를 참조 하세요.For more information about how to grant permissions to application pool identities, see Application Pool Identities and Secure Content in IIS Through File System ACLs on the IIS.net site.