이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. |
번역
원본
|
ASP.NET 웹 응용 프로그램 프로젝트 배포 FAQ
이 항목에서는 웹 응용 프로그램 프로젝트를 배포하는 방법에 대한 질문과 대답을 제공합니다.
많은 대답에서 프로젝트 파일을 편집하여 배포 설정을 변경하도록 지시합니다. 이를 수행하는 방법에 대한 자세한 내용은 방법: 프로젝트 파일에서 배포 설정 편집을 참조하십시오.
이 항목에는 다음과 같은 단원이 포함되어 있습니다.
웹 패키지 및 게시 탭에서 이 응용 프로그램을 실행하는 데 필요한 파일만 또는 이 프로젝트의 모든 파일 옵션을 선택하여 배포되는 파일을 제한할 수 있습니다. 이 프로젝트의 모든 파일 옵션을 선택하는 경우 솔루션 탐색기에서 파일을 마우스 오른쪽 단추로 클릭하고 프로젝트에서 제외를 선택하여 파일이 배포되지 않게 할 수 있습니다.
이러한 옵션으로 충분하지 않으면 프로젝트 파일을 편집하여 적절한 PropertyGroup 요소에서 ExcludeFilesFromDeployment 요소나 ExcludeFoldersFromDeployment 요소(또는 두 요소 모두)를 추가합니다. 각 요소에서 한 이름을 지정하거나 세미콜론(;)으로 구분된 여러 이름을 지정할 수 있습니다. 다음 예제에서는 디버그 빌드 구성에 대한 PropertyGroup 요소를 보여 줍니다.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<ExcludeFilesFromDeployment>
File1.aspx;File2.aspx
</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>
Folder1;Folder2
</ExcludeFoldersFromDeployment>
<!-- Other settings -->
</PropertyGroup>
패키지 및 게시의 자세한 정도는 MSBuild의 자세한 정도를 결정하는 동일한 Visual Studio 설정으로 제어됩니다. 주 메뉴에서 도구를 선택한 다음 옵션을 선택합니다. 옵션 대화 상자에서 프로젝트 및 솔루션을 확장한 다음 빌드 및 실행을 선택합니다. 그러면 MSBuild 프로젝트 빌드 출력의 자세한 정도 드롭다운 목록이 표시되고 목록에서 다음 옵션 중 하나를 선택할 수 있습니다.
-
최소
-
약간
-
보통
-
자세히
-
매우 자세히
이러한 옵션은 명령줄에서 MSBuild를 실행할 때 /verbosity 또는 /v 플래그를 사용하여 설정할 수 있는 항목에 해당합니다. MSBuild 명령줄 플래그에 대한 자세한 내용은 MSBuild 명령줄 참조를 참조하십시오.
기본적으로 Visual Studio에서 배포를 위해 자동으로 생성하는 각 스크립트는 트랜잭션에서 실행됩니다. 전체 텍스트 카탈로그를 배포하는 스크립트는 트랜잭션에서 성공적으로 실행되지 않습니다. 따라서 기본적으로 Visual Studio에서는 전체 텍스트 카탈로그에 대한 스크립트가 만들어지지 않습니다.
전체 텍스트 카탈로그를 포함하도록 배포를 변경하려면 프로젝트 파일을 편집하여 다음과 같이 변경합니다.
-
자동으로 생성된 스크립트에 대한 Source 요소의 Transacted 특성을 False로 설정합니다.
-
자동으로 생성된 스크립트에 대한 PreSource 요소의 CopyAllFullTextCatalogs 특성을 True로 설정합니다.
기본적으로 Visual Studio에서 데이터베이스 구조를 배포하는 스크립트가 자동으로 생성되도록 지정하는 경우 시스템에서 생성된 개체(예: 제약 조건)의 새 이름이 대상 데이터베이스에서 생성됩니다. 사용자 지정 스크립트를 작성하여 이러한 개체 중 하나를 수정하거나 삭제하는 경우와 해당 개체에 대해 생성된 이름을 소스 데이터베이스에서 지정하는 경우 스크립트가 대상 데이터베이스에서 실행될 때 오류가 발생할 수 있습니다.
시스템에서 생성된 개체 이름이 소스 데이터베이스와 대상 데이터베이스에서 동일하도록 지정할 수 있습니다. 이렇게 하려면 프로젝트 파일을 편집하고 자동으로 생성된 스크립트에 대한 PreSource 요소에 다음 특성을 추가합니다.
DriIncludeSystemNames="True"
예. 프로젝트 파일을 편집하여 적절한 PropertyGroup 요소에서 DeployOnBuild 요소를 추가합니다. 다음 예제에서는 릴리스 빌드 구성에 대한 PropertyGroup 요소를 보여 줍니다.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DeployOnBuild>True</DeployOnBuild> <!-- Additional settings --> </PropertyGroup>
DeployDefaultTarget 요소도 Package로 설정되어야 합니다. 그러나 이것이 기본값이기 때문에 이 작업은 선택 사항입니다.
예. 프로젝트 파일을 편집하여 적절한 PropertyGroup 요소에서 IntermediateOutputPath 요소를 추가합니다. 다음 예제에서는 릴리스 빌드 구성에 대한 PropertyGroup 요소를 보여 줍니다.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <IntermediateOutputPath>Path</IntermediateOutputPath> <!-- Additional settings --> </PropertyGroup>
배포 패키지와 연결된 모든 파일을 만들 폴더의 전체 경로로 Path를 바꿉니다.
IIS 7 이상 버전에서 가능합니다. 배포 권한을 위임하는 방법에 대한 자세한 내용은 다음 항목을 참조하십시오.
-
Microsoft TechNet 웹 사이트의 사이트 및 응용 프로그램 관리 위임(IIS 7)
-
IIS.NET 웹 사이트의 Delegating Administration
트랜잭션 모드를 혼합하는 여러 스크립트를 실행하면 시간 제한 오류가 발생할 수 있습니다. 기본적으로 자동으로 생성된 스크립트는 트랜잭션에서 실행되지만 사용자 지정 스크립트는 트랜잭션에서 실행되지 않습니다. 따라서 SQL 패키지 및 게시 탭에서 기존 데이터베이스에서 데이터 및/또는 스키마 끌어오기 옵션을 선택하는 경우와 사용자 지정 SQL 스크립트를 추가하는 경우 모든 스크립트에서 동일한 트랜잭션 설정을 사용하도록 일부 스크립트에 대한 트랜잭션 설정을 변경해야 합니다. 자세한 내용은 방법: 웹 응용 프로그램 패키지를 사용하여 데이터베이스 배포를 참조하십시오.
ASP.NET 4 웹 응용 프로그램을 배포하려면 ASP.NET 4가 대상 서버에서 IIS를 사용하여 등록되어야 합니다. 또한 배포할 IIS 웹 사이트의 응용 프로그램 풀이 .NET Framework 4에 할당되어야 합니다. 이러한 조건 중 하나에 해당하지 않으면 배포하려고 할 때 다음 오류 중 하나가 발생할 수 있습니다.
-
기본 .NET 4.0 응용 프로그램 풀이 없거나 응용 프로그램을 추가할 수 없습니다. ASP.NET 4.0이 이 컴퓨터에 설치되어 있는지 확인하십시오.
-
사용하려는 응용 프로그램 풀의 'managedRuntimeVersion' 속성이 'v2.0'(으)로 설정되어 있습니다. 이 응용 프로그램에는 'v4.0'이(가) 필요합니다.
ASP.NET 4는 Visual Studio를 설치할 때 설치됩니다. 그러나 설치 프로세스에서 IIS를 사용하여 ASP.NET 4를 자동으로 등록하지 않으며 기존 IIS 웹 사이트가 .NET 4 응용 프로그램 풀에 자동으로 할당되지 않습니다. 이 문제를 해결하려면 IIS를 사용하여 ASP.NET을 등록하고 대상 IIS 웹 사이트의 응용 프로그램 풀을 패키지에 필요한 .NET Framework 버전으로 설정합니다. IIS를 등록하는 방법에 대한 자세한 내용은 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)를 참조하십시오.
특정 시나리오에서 t(테스트) 옵션과 함께 deploy.cmd 파일을 사용하여 패키지를 설치하려고 하면 다음 예제와 유사한 오류가 발생합니다.
오류: 'sitemanifest/dbFullSql[@path='C:\TEMP\AdventureWorksGrant.sql']/sqlScript'의 스트림 데이터를 아직 사용할 수 없습니다.
즉, 이 명령으로 테스트 보고서를 생성할 수 없습니다. 그러나 이 메시지는 y(실제 설치) 옵션을 사용하여 명령을 실행하는 경우 배포가 실패함을 의미하지는 않습니다. 이 메시지는 테스트 모드에서 명령을 실행하는 경우에만 문제가 있음을 나타냅니다.
데이터베이스에 사용자 또는 역할이 포함되어 있지만 사용자 또는 역할을 만들 수 있는 권한이 없는 자격 증명을 사용하여 게시하기 때문에 이 오류가 자주 발생합니다. 예를 들어 호스팅 회사는 db_datareader, db_datawriter 및 db_ddladmin 역할을 사용자를 위해 설정하는 사용자 계정에 할당할 수 있습니다. 이러한 역할은 대부분의 데이터베이스 개체를 만드는 데 충분하지만 사용자 또는 역할을 만드는 데는 충분하지 않습니다. 이것이 오류의 원인이면 출력 창에 다음과 유사한 메시지가 표시됩니다.
오류의 대략적인 위치는 스크립트의 줄 '1'과(와) '3' 사이입니다. 자세한 정보 표시 로그에 오류에 대한 상세 정보가 있을 수 있습니다. 명령은 다음으로 시작합니다.
CREATE USER [user2] FOR LOGIN [user2] WITH DEFAULT
오류: 사용자에게 이 동작을 수행할 권한이 없습니다.
실패한 명령이 CREATE ROLE일 수도 있습니다. 이 경우 데이터베이스 배포에서 사용자 및 역할을 제외하여 오류를 방지할 수 있습니다. 이렇게 하려면 다음 특성을 포함하도록 데이터베이스의 자동으로 생성된 스크립트에 대한 PreSource 요소를 편집합니다.
CopyAllUsers=false, CopyAllRoles=false
개발 데이터베이스의 사용자 또는 역할이 대상 데이터베이스에 있어야 하는 경우 호스팅 공급자에게 문의하여 도움을 받으십시오.
프로젝트의 Bin 폴더에 ASP.NET Razor 및 SQL Server Compact 어셈블리를 배치하여 프로젝트를 배포할 수 있습니다. 웹 사이트 또는 웹 응용 프로그램 프로젝트에 필요한 어셈블리를 포함하려면 다음 단계를 수행합니다.
-
솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 배포 가능 종속성 추가를 클릭합니다.
-
배포 가능 종속성 추가 대화 상자에서 Razor 구문이 있는 ASP.Net 웹 페이지 및 SQL Server Compact를 선택합니다.
-
확인을 클릭합니다.
이제 다른 프로젝트를 배포할 때와 같은 방법으로 웹 프로젝트를 배포할 수 있습니다.