Visual Studio를 사용하여 웹 배포 ASP.NET: 테스트에 배포

작성자: Tom Dykstra

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

Azure에 배포하는 현재 버전은 Azure에서 ASP.NET Core 웹앱 만들기를 참조하세요.

개요

이 자습서에서는 로컬 컴퓨터의 IIS(인터넷 정보 서버)에 ASP.NET 웹 애플리케이션을 배포합니다.

일반적으로 애플리케이션을 개발할 때는 애플리케이션을 실행하고 Visual Studio에서 테스트합니다. 기본적으로 Visual Studio 2017의 웹 애플리케이션 프로젝트는 IIS Express 개발 웹 서버로 사용합니다. IIS Express Visual Studio 2017에서 기본적으로 사용하는 Visual Studio 개발 서버(Cassini라고도 함)보다 전체 IIS처럼 동작합니다. 그러나 두 개발 웹 서버 모두 IIS와 똑같이 작동하지 않습니다. 따라서 앱이 Visual Studio에서 올바르게 실행되고 테스트될 수 있지만 IIS에 배포되면 실패합니다.

다음 두 가지 방법으로 애플리케이션을 안정적으로 테스트할 수 있습니다.

  1. 나중에 프로덕션 환경에 배포하는 데 사용할 것과 동일한 프로세스를 사용하여 개발 컴퓨터의 IIS에 애플리케이션을 배포합니다.

    웹 프로젝트를 실행할 때 IIS를 사용하도록 Visual Studio를 구성할 수 있지만 배포 프로세스를 테스트하지는 않습니다. 이 메서드는 배포 프로세스의 유효성을 검사하고 애플리케이션이 IIS에서 올바르게 실행되는지 확인합니다.

  2. 프로덕션 환경과 유사한 테스트 환경에 애플리케이션을 배포합니다.

    이러한 자습서의 프로덕션 환경은 Azure App Service Web Apps. 이상적인 테스트 환경은 Azure 서비스에서 만든 추가 웹앱입니다. 프로덕션 웹앱과 동일한 방식으로 설정되지만 테스트에만 사용합니다.

옵션 2는 가장 신뢰할 수 있는 테스트 방법입니다. 옵션 2를 사용하는 경우 반드시 옵션 1을 사용할 필요는 없습니다. 그러나 타사 호스팅 공급자에 배포하는 경우 옵션 2가 적합하지 않거나 비용이 많이 들 수 있으므로 이 자습서 시리즈에서는 두 가지 방법을 모두 보여 줍니다. 옵션 2에 대한 지침은 프로덕션 환경에 배포 자습서에서 제공됩니다.

Visual Studio에서 웹 서버를 사용하는 방법에 대한 자세한 내용은 ASP.NET 웹 프로젝트용 Visual Studio의 웹 서버를 참조하세요.

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

Contoso University 시작 프로젝트 다운로드

Contoso University Visual Studio 시작 솔루션 및 프로젝트를 다운로드하여 설치합니다. 이 솔루션에는 완료된 자습서가 포함되어 있습니다.

시작 프로젝트 다운로드

IIS 설치

개발 컴퓨터에서 IIS에 배포하려면 IIS 및 웹 배포가 설치되어 있는지 확인합니다. 기본적으로 Visual Studio는 웹 배포를 설치하지만 IIS는 기본 Windows 10, Windows 8 또는 Windows 7 구성에 포함되지 않습니다. IIS를 이미 설치했고 기본 애플리케이션 풀이 이미 .NET 4로 설정된 경우 다음 섹션으로 건너뜁니다.

  1. WPI(웹 플랫폼 설치 관리자)를 사용하여 IIS 및 웹 배포를 설치하는 것이 좋습니다. WPI는 필요한 경우 IIS 및 웹 배포 필수 구성 요소를 포함하는 권장 IIS 구성을 설치합니다.

    IIS, 웹 배포 또는 필요한 구성 요소를 이미 설치한 경우 WPI는 누락된 구성 요소만 설치합니다.

    • 웹 플랫폼 설치 관리자를 사용하여 IIS 및 웹 배포를 설치합니다.

      WPI를 사용하여 IIS 설치

      WPI를 사용하여 웹 배포 설치

      IIS 7이 설치될 것임을 나타내는 메시지가 표시됩니다. 링크는 Windows 8 IIS 8에서 작동하지만 Windows 8 이상에서는 다음 단계를 수행하여 ASP.NET 4.7이 설치되어 있는지 확인합니다.

    • 제어판>프로그램>프로그램 및 기능>Windows 기능 켜기 또는 끄기를 엽니다.

    • 인터넷 정보 서비스, World Wide Web Services애플리케이션 개발 기능을 확장합니다.

    • ASP.NET 4.7이 선택되어 있는지 확인합니다.

      ASP.NET 4.7 선택

    • World Wide Web ServicesIIS 관리 콘솔이 선택되어 있는지 확인합니다. 이렇게 하면 IIS 및 IIS 관리자가 설치됩니다.

      World Wide Web Services 선택

    • 확인을 선택합니다. 설치가 진행 중임을 나타내는 대화 상자 메시지가 나타납니다.

IIS를 설치한 후 IIS 관리자를 실행하여 .NET Framework 버전 4가 기본 애플리케이션 풀에 할당되었는지 확인합니다.

  1. WINDOWS+R을 눌러 실행 대화 상자를 엽니다.

    (Windows 8 이상에서는 시작 페이지에서 "실행"을 입력합니다. Windows 7의 시작 메뉴에서 실행을 선택합니다. 실행시작 메뉴에 없는 경우 작업 표시줄을 마우스 오른쪽 단추로 클릭하고, 속성을 선택하고, 시작 메뉴 탭을 선택하고, 사용자 지정을 선택한 다음, 실행 명령을 선택합니다.)

  2. "inetmgr"을 입력하고 확인을 선택합니다.

  3. Connections 창에서 서버 노드를 확장하고 애플리케이션 풀을 선택합니다. 다음 그림과 같이 DefaultAppPool이 .NET Framework 버전 4에 할당된 경우 애플리케이션 풀 창에서 다음 섹션으로 건너뜁니다.

    Inetmgr_showing_4.0_app_pools

  4. 애플리케이션 풀이 두 개만 표시되고 둘 다 .NET Framework 2.0으로 설정된 경우 IIS에 ASP.NET 4를 설치합니다.

    Windows 8 이상은 ASP.NET 4.7이 설치되어 있는지 확인하기 위한 이전 섹션의 지침을 참조하거나 Windows 8 및 Windows Server 2012 ASP.NET 4.5를 설치하는 방법을 참조하세요. Windows 7의 경우 Windows 시작 메뉴에서 명령 프롬프트를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택하여 명령 프롬프트 창을 엽니다. aspnet_regiis.exe 실행하여 다음 명령을 사용하여 IIS에 ASP.NET 4를 설치합니다. (32비트 시스템에서는 "Framework64"를 "Framework"로 대체합니다.)

    cd %windir%\Microsoft.NET\Framework64\v4.0.30319
    aspnet_regiis.exe –i
    

    이 명령은 .NET Framework 4에 대한 새 애플리케이션 풀을 만들지만 기본 애플리케이션 풀은 2.0으로 설정됩니다. .NET 4를 대상으로 하는 애플리케이션을 해당 애플리케이션 풀에 배포하므로 애플리케이션 풀을 .NET 4로 변경합니다.

  5. IIS 관리자를 닫은 경우 다시 실행하고 서버 노드를 확장한 다음 애플리케이션 풀을 선택합니다.

  6. 애플리케이션 풀 창에서 DefaultAppPool을 선택합니다. 작업 창에서 기본 설정을 선택합니다.

    Inetmgr_selecting_Basic_Settings_for_app_pool

  7. 애플리케이션 풀 편집 대화 상자에서 .NET CLR 버전을 .NET CLRv4.0.30319로 변경합니다. 확인을 선택합니다.

    Selecting_.NET_4_for_DefaultAppPool

이제 IIS에 웹 애플리케이션을 게시할 준비가 되었습니다. 그러나 먼저 테스트를 위한 데이터베이스를 만듭니다.

SQL Server Express 설치

LocalDB는 IIS에서 작동하도록 설계되지 않았으므로 테스트 환경에 SQL Server Express 설치해야 합니다. Visual Studio 2010 SQL Server Express 사용하는 경우 기본적으로 이미 설치되어 있습니다. Visual Studio 2012 이상을 사용하는 경우 SQL Server Express 설치합니다.

SQL Server Express 설치하려면 다운로드 센터: Microsoft SQL Server 2017 Express Edition에서 다운로드하여 설치합니다.

SQL Server 설치 센터의 첫 번째 페이지에서 새 SQL Server 독립 실행형 설치를 선택하거나 기존 설치에 기능을 추가하고 기본 선택 사항을 수락하는 지침을 따릅니다. 설치 마법사에서 기본 설정을 적용합니다. 설치 옵션에 대한 자세한 내용은 설치 마법사에서 SQL Server 설치(설치)를 참조하세요.

테스트 환경에 대한 SQL Server Express 데이터베이스 만들기

Contoso University 애플리케이션에는 다음 두 개의 데이터베이스가 있습니다.

  1. 멤버 자격 데이터베이스
  2. 애플리케이션 데이터베이스

이러한 데이터베이스를 두 개의 개별 데이터베이스 또는 단일 데이터베이스에 배포할 수 있습니다. 이러한 데이터베이스를 결합하면 데이터베이스 조인이 더 쉬워집니다.

타사 호스팅 공급자에 배포하는 경우 호스팅 계획을 사용하여 결합할 수도 있습니다. 예를 들어 공급자는 여러 데이터베이스에 대해 더 많은 요금을 부과하거나 둘 이상의 데이터베이스를 허용하지 않을 수도 있습니다.

이 자습서에서는 테스트 환경의 두 데이터베이스와 스테이징 및 프로덕션 환경의 한 데이터베이스에 배포합니다.

Visual Studio의 보기 메뉴에서 서버 Explorer(Visual Web Developer의 데이터베이스 Explorer)를 선택합니다. 데이터 Connections 마우스 오른쪽 단추로 클릭하고 새 SQL Server 데이터베이스 만들기를 선택합니다.

Selecting_Create_New_SQL_Server_Database

새 SQL Server 데이터베이스 만들기 대화 상자의 서버 이름 상자에 ".\SQLExpress"를 입력하고 새 데이터베이스 이름 상자에 "aspnet-ContosoUniversity"를 입력합니다. 확인을 선택합니다.

aspnet-ContosoUniversity 만들기

동일한 절차에 따라 라는 ContosoUniversity새 SQL Server Express School 데이터베이스를 만듭니다.

서버 Explorer 두 개의 새 데이터베이스를 표시합니다.

서버 Explorer 새 데이터베이스

새 데이터베이스에 대한 권한 부여 스크립트 만들기

애플리케이션이 개발 컴퓨터의 IIS에서 실행되면 애플리케이션은 기본 애플리케이션 풀의 자격 증명을 사용하여 데이터베이스에 액세스합니다. 그러나 기본적으로 애플리케이션 풀에는 데이터베이스를 열 수 있는 권한이 없습니다. 즉, 해당 권한을 부여하기 위해 스크립트를 실행해야 합니다. 이 섹션에서는 해당 스크립트를 만들고 나중에 실행하여 애플리케이션이 IIS에서 실행할 때 데이터베이스를 열 수 있는지 확인합니다.

텍스트 편집기에서 다음 SQL 명령을 새 파일에 복사하고 Grant.sql 저장합니다.

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

Visual Studio에서 Contoso University 솔루션을 엽니다. 프로젝트 중 하나가 아닌 솔루션을 마우스 오른쪽 단추로 클릭하고 추가를 선택합니다. 기존 항목을 선택하고 Grant.sql 찾아 엽니다.

참고

이 스크립트는 이 자습서에 지정된 대로 SQL Server Express 2012 이상 및 Windows 10, Windows 8 또는 Windows 7의 IIS 설정에서 작동하도록 설계되었습니다. 다른 버전의 SQL Server 또는 Windows를 사용하거나 컴퓨터에서 IIS를 다르게 설정하는 경우 이 스크립트를 변경해야 할 수 있습니다. SQL Server 스크립트에 대한 자세한 내용은 온라인 설명서 SQL Server 참조하세요.

참고

보안 참고 사항 이 스크립트는 db_owner 런타임에 데이터베이스에 액세스하는 사용자에게 권한을 부여합니다. 이는 프로덕션 환경에 있는 것입니다. 일부 시나리오에서는 배포에 대해서만 전체 데이터베이스 스키마 업데이트 권한이 있는 사용자를 지정하고 런타임에 데이터를 읽고 쓸 수 있는 권한만 있는 다른 사용자를 지정할 수 있습니다. 자세한 내용은 이 자습서의 뒷부분에 있는 Code First 마이그레이션 대한 자동 Web.config 변경 내용 검토를 참조하세요.

애플리케이션 데이터베이스에서 권한 부여 스크립트 실행

배포하는 동안 데이터베이스 배포에서 dbDacFx 공급자를 사용하므로 배포 중에 멤버 자격 데이터베이스에서 권한 부여 스크립트를 실행하도록 게시 프로필을 구성할 수 있습니다. 애플리케이션 데이터베이스를 배포하는 방법인 Code First 마이그레이션 배포 중에는 스크립트를 실행할 수 없습니다. 즉, 애플리케이션 데이터베이스에 배포하기 전에 스크립트를 수동으로 실행해야 합니다.

  1. Visual Studio에서 이전에 만든 Grant.sql 파일을 엽니다.

  2. 연결을 선택합니다.

    연결 단추

  3. 서버에 연결 대화 상자에서 서버 이름으로.\SQLExpress를 입력합니다. 연결을 선택합니다.

  4. 데이터베이스 드롭다운 목록에서 ContosoUniversity를 선택합니다. 실행을 선택합니다.

    데이터베이스 드롭다운 목록에서 ContosoUniversity를 선택합니다. 실행을 선택합니다.

이제 기본 애플리케이션 풀 ID에는 애플리케이션이 실행되면 데이터베이스 테이블을 만들 수 있는 Code First 마이그레이션 애플리케이션 데이터베이스에 충분한 권한이 있습니다.

IIS에 게시

Visual Studio 및 웹 배포를 사용하여 IIS에 배포할 수 있는 몇 가지 방법이 있습니다.

  • Visual Studio 한 번 클릭 게시를 사용합니다.
  • 명령줄에서 게시합니다.
  • 배포 패키지를 만들고 IIS 관리자를 사용하여 설치합니다. 패키지에는 IIS에 사이트를 설치하는 데 필요한 모든 파일 및 메타데이터가 포함된 .zip 파일이 있습니다.
  • 배포 패키지를 만들고 명령줄을 사용하여 설치합니다.

배포 작업을 자동화하도록 Visual Studio를 설정하기 위해 이전 자습서에서 진행한 프로세스는 이러한 모든 메서드에 적용됩니다. 이 자습서에서는 처음 두 가지 메서드를 사용합니다. 배포 패키지 사용에 대한 자세한 내용은 Visual Studio 용 웹 배포 콘텐츠 맵 및 ASP.NET 웹 배포 패키지를 만들고 설치하여 웹 애플리케이션 배포를 참조하세요.

게시하기 전에 관리자 모드에서 Visual Studio를 실행하고 있는지 확인합니다. 제목 표시줄에 (관리자) 가 표시되지 않으면 Visual Studio를 닫습니다. Windows 8(이상) 시작 페이지 또는 Windows 7 시작 메뉴에서 Visual Studio 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택합니다. 관리자 모드는 로컬 컴퓨터에서 IIS에 게시할 때만 게시해야 합니다.

게시 프로필 만들기

  1. 솔루션 탐색기ContosoUniversity 프로젝트(ContosoUniversity.DAL 프로젝트가 아님)를 마우스 오른쪽 단추로 클릭합니다. 게시를 선택합니다. 게시 페이지가 나타납니다.

  2. 새 프로필을 선택합니다. 게시 대상 선택 대화 상자가 나타납니다.

  3. IIS, FTP 등을 선택합니다. 프로필 만들기를 선택합니다. 게시 마법사가 나타납니다.

    웹 게시 마법사 프로필 탭

  4. 게시 방법 드롭다운 메뉴에서 웹 배포를 선택합니다.

  5. 서버에localhost를 입력합니다.

  6. 사이트 이름기본 웹 사이트/ContosoUniversity를 입력합니다.

  7. 대상 URL에 를 입력합니다http://localhost/ContosoUniversity.

    대상 URL 설정은 필요하지 않습니다. Visual Studio에서 애플리케이션 배포를 마치면 기본 브라우저가 이 URL로 자동으로 열립니다. 배포 후 브라우저를 자동으로 열지 않으려면 이 상자를 비워 둡니다.

  8. 연결 유효성 검사를 선택하여 설정이 올바른지 확인하고 로컬 컴퓨터에서 IIS에 연결할 수 있는지 확인합니다.

    녹색 검사 표시는 연결이 성공했음을 확인합니다.

    웹 게시 마법사 연결 탭

  9. 다음을 선택하여 설정 탭으로 이동합니다.

  10. 구성 드롭다운 상자는 배포할 빌드 구성을 지정합니다. 릴리스의 기본값으로 설정된 상태로 둡 니다. 이 자습서에서는 디버그 빌드를 배포하지 않습니다.

  11. 파일 게시 옵션을 확장합니다. App_Data 폴더에서 파일 제외를 선택합니다.

    테스트 환경에서 애플리케이션은 App_Data 폴더의 .mdf 파일이 아니라 로컬 SQL Server Express instance 만든 데이터베이스에 액세스합니다.

  12. 게시하는 동안 사전 컴파일을 그대로 두고 대상에서 추가 파일 제거 검사 상자를 지웁니다.

    설정 탭의 파일 게시 옵션

    미리 컴파일은 대용량 사이트에 주로 유용한 옵션입니다. 사이트가 게시된 후 페이지가 처음 요청될 때 시작 시간을 줄일 수 있습니다.

    첫 번째 배포이므로 추가 파일을 제거할 필요가 없으며 아직 대상 폴더에 파일이 없습니다.

    참고

    동일한 사이트에 대한 후속 배포를 위해 대상에서 추가 파일 제거 를 선택하는 경우 배포하기 전에 삭제할 파일을 미리 볼 수 있도록 미리 보기 기능을 사용해야 합니다. 예상되는 동작은 웹 배포가 프로젝트에서 삭제한 대상 서버의 파일을 삭제하는 것입니다. 그러나 원본 및 대상 폴더 아래의 전체 폴더 구조는 비교됩니다. 일부 시나리오에서는 웹 배포에서 삭제하지 않으려는 파일을 삭제할 수 있습니다.

    예를 들어 루트 폴더에 프로젝트를 배포할 때 서버의 하위 폴더에 웹 애플리케이션이 있는 경우 하위 폴더가 삭제됩니다. contoso.com 기본 사이트에 대한 프로젝트와 contoso.com/blog 블로그용 다른 프로젝트가 있을 수 있습니다. 블로그 애플리케이션은 하위 폴더에 있습니다. 기본 사이트를 배포할 때 대상에서 추가 파일 제거를 선택하면 블로그 애플리케이션이 삭제됩니다.

    또 다른 예제에서는 App_Data 폴더가 예기치 않게 삭제될 수 있습니다. SQL Server Compact 같은 특정 데이터베이스는 App_Data 폴더에 데이터베이스 파일을 저장합니다. 초기 배포 후에는 후속 배포에서 데이터베이스 파일을 계속 복사하지 않으려는 것이므로 패키지/게시 웹 탭에서 App_Data 제외 를 선택합니다. 이렇게 하면 대상에서 추가 파일 제거 를 선택한 경우 다음에 게시할 때 데이터베이스 파일과 App_Data 폴더 자체가 삭제됩니다.

멤버 자격 데이터베이스에 대한 배포 구성

다음 단계는 대화 상자의 데이터베이스 섹션에 있는 DefaultConnection 데이터베이스에 적용 됩니다 .

  1. 원격 연결 문자열 상자에 새 SQL Server Express 멤버 자격 데이터베이스를 가리키는 다음 연결 문자열 입력합니다.

    Data Source=.\SQLExpress;Initial Catalog=aspnet-ContosoUniversity;Integrated Security=True
    

    런타임에 이 연결 문자열 사용이 선택되어 있으므로 배포 프로세스는 배포된 Web.config 파일에 이 연결 문자열 배치합니다.

    서버 Explorer 연결 문자열 가져올 수도 있습니다. 서버 Explorer데이터 Connections 확장하고 machinename>\sqlexpress.aspnet-ContosoUniversity 데이터베이스를 선택한< 다음 속성 창에서 연결 문자열 값을 복사합니다. 해당 연결 문자열 삭제Pooling=False할 수 있는 하나의 추가 설정이 있습니다.

  2. 데이터베이스 업데이트를 선택합니다.

    이렇게 하면 배포하는 동안 데이터베이스 스키마가 대상 데이터베이스에 만들어집니다. 다음 단계에서는 실행해야 하는 추가 스크립트를 지정합니다. 하나는 데이터베이스에 기본 애플리케이션 풀에 대한 액세스 권한을 부여하고 다른 하나는 데이터를 배포합니다.

  3. 데이터베이스 업데이트 구성을 선택합니다.

  4. 데이터베이스 업데이트 구성 대화 상자에서 SQL 스크립트 추가를 선택합니다. 이전에 솔루션 폴더에 저장한 Grant.sql 스크립트로 이동합니다.

  5. 프로세스를 반복하여 aspnet-data-dev.sql 스크립트를 추가합니다.

    멤버 자격 데이터베이스에 대한 데이터베이스 업데이트 구성

  6. 닫기를 선택합니다.

애플리케이션 데이터베이스에 대한 배포 구성

Visual Studio에서 Entity Framework DbContext 클래스를 검색하면 데이터베이스 업데이트 검사 상자 대신 Code First 마이그레이션 실행 검사 상자가 있는 항목이 데이터베이스 섹션에 만들어집니다. 이 자습서에서는 해당 검사 상자를 사용하여 Code First 마이그레이션 배포를 지정합니다.

일부 시나리오에서는 데이터베이스를 DbContext 사용하지만 마이그레이션 대신 dbDacFx 공급자를 사용하여 데이터베이스를 배포하려고 합니다. 이 경우 MSDN의 ASP.NET 웹 배포 FAQ에서 마이그레이션 없이 Code First 데이터베이스 배포 어떻게 할까요? 참조하세요.

다음 단계는 대화 상자의 데이터베이스 섹션에 있는 SchoolContext 데이터베이스에 적용 됩니다 .

  1. 원격 연결 문자열 상자에 새 SQL Server Express 애플리케이션 데이터베이스를 가리키는 다음 연결 문자열 입력합니다.

    Data Source=.\SQLExpress;Initial Catalog=ContosoUniversity;Integrated Security=True
    

    런타임에 이 연결 문자열 사용이 선택되어 있으므로 배포 프로세스는 배포된 Web.config 파일에 이 연결 문자열 배치합니다.

    멤버 자격 데이터베이스를 연결 문자열 동일한 방식으로 서버 Explorer 애플리케이션 데이터베이스 연결 문자열 가져올 수도 있습니다.

  2. Code First 마이그레이션 실행을 선택합니다(애플리케이션 시작 시 실행).

    이 옵션을 사용하면 배포 프로세스에서 배포된 Web.config 파일을 구성하여 이니셜라이저를 MigrateDatabaseToLatestVersion 지정합니다. 이 이니셜라이저는 애플리케이션이 배포 후 처음으로 데이터베이스에 액세스할 때 데이터베이스를 최신 버전으로 자동으로 업데이트합니다.

게시 프로필 변환 구성

  1. 닫기를 선택합니다. 변경 내용을 저장할지 묻는 메시지가 표시되면 예를 선택합니다.

  2. 솔루션 탐색기속성을 확장하고 PublishProfiles를 확장합니다.

  3. CustomProfile.pubxml을 마우스 오른쪽 단추로 클릭하고 이름을 Test.pubxml로 바꿉니다.

  4. Test.pubxml을 마우스 오른쪽 단추로 클릭합니다. 구성 변환 추가를 선택합니다.

    구성 변환 추가 메뉴

    Visual Studio는 Web.Test.config 변환 파일을 만들고 엽니다.

  5. Web.Test.config 변환 파일에서 열기 구성 태그 바로 뒤에 다음 코드를 삽입합니다.

    <appSettings>
        <add key="Environment" value="Test" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
    </appSettings>
    

    테스트 게시 프로필을 사용하는 경우 이 변환은 환경 표시기를 "테스트"로 설정합니다. 배포된 사이트에는 "Contoso University" H1 제목 다음에 "(테스트)"가 표시됩니다.

  6. 파일을 저장하고 닫습니다.

  7. Web.Test.config파일을 마우스 오른쪽 단추 로 클릭하고 변환 미리 보기를 선택하여 코딩한 변환이 예상된 변경 내용을 생성하는지 확인합니다.

    Web.config 미리 보기 창에는Web.Release.config변환과 Web.Test.config 변환을 모두 적용한 결과가 표시됩니다.

배포 업데이트 미리 보기

  1. 웹 게시 마법사를 다시 엽니다(ContosoUniversity 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 선택한 다음 미리 보기).

  2. 미리 보기 대화 상자에서 미리 보기 시작을 선택하여 복사할 파일 목록을 확인합니다.

    미리 보기 게시

    데이터베이스 미리 보기 링크를 선택하여 멤버 자격 데이터베이스에서 실행되는 스크립트를 볼 수도 있습니다. (스크립트는 Code First 마이그레이션 배포에 대해 실행되지 않으므로 애플리케이션 데이터베이스에 대해 미리 볼 것이 없습니다.)

  3. 게시를 선택합니다.

    Visual Studio가 관리자 모드가 아닌 경우 권한 오류 메시지가 표시될 수 있습니다. 이 경우 Visual Studio를 닫고 관리자 모드에서 열고 다시 게시해 봅니다.

    Visual Studio가 관리자 모드인 경우 출력 창은 성공적인 빌드 및 게시를 보고합니다.

    Output_window_publish_Test

    게시 프로필 연결 탭의 대상 URL 상자에 URL을 입력한 경우 브라우저가 컴퓨터의 IIS에서 실행되는 Contoso University 홈 페이지로 자동으로 열립니다.

테스트 환경에서 테스트

환경 표시기는 환경 표시기의 Web.config 변환이 성공했음을 보여 주는 "(Dev)" 대신 "(테스트)"를 표시합니다.

강사 페이지를 실행하여 Code First가 강사 데이터를 사용하여 데이터베이스를 시드했는지 확인합니다. 이 페이지를 선택하면 Code First가 데이터베이스를 만든 다음 메서드를 실행 Seed 하므로 로드하는 데 몇 분 정도 걸릴 수 있습니다. (애플리케이션이 아직 데이터베이스에 액세스하려고 하지 않았기 때문에 홈페이지에 있을 때는 그렇게 하지 않았습니다.)

학생 탭을 선택하여 배포된 데이터베이스에 학생이 없는지 확인합니다.

학생 메뉴에서 학생 추가를 선택합니다. 학생을 추가한 다음 학생 페이지에서 새 학생을 봅니다. 이렇게 하면 데이터베이스에 성공적으로 쓸 수 있는지 확인합니다.

과정 메뉴에서 크레딧 업데이트를 선택합니다. 크레딧 업데이트 페이지에는 관리자 권한이 필요하므로 로그인 페이지가 표시됩니다. 이전에 만든 관리자 계정 자격 증명("admin" 및 "devpwd")을 입력합니다. 크레딧 업데이트 페이지가 표시됩니다. 이렇게 하면 이전 자습서에서 만든 관리자 계정이 테스트 환경에 올바르게 배포되었는지 확인합니다.

자리 표시자 파일만 있는 c:\inetpub\wwwroot\ContosoUniversity 폴더에 ELMAH 폴더가 있는지 확인합니다.

Code First 마이그레이션 대한 자동 Web.config 변경 내용 검토

배포된 애플리케이션의 C:\inetpub\wwwroot\ContosoUniversity에서 Web.config 파일을 열고 배포 프로세스가 데이터베이스를 최신 버전으로 자동으로 업데이트하도록 Code First 마이그레이션 구성한 위치를 확인할 수 있습니다.

배포된 애플리케이션의 C:\inetpub\wwwroot\ContosoUniversity에서 Web.config 파일을 열고 배포 프로세스가 데이터베이스를 최신 버전으로 자동으로 업데이트하도록 Code First 마이그레이션 구성한 위치를 확인합니다.

또한 배포 프로세스는 Code First 마이그레이션 데이터베이스 스키마 업데이트에만 사용할 수 있는 새 연결 문자열 만들었습니다.

Database_Publish 연결 문자열

이 추가 연결 문자열 데이터베이스 스키마 업데이트에 대한 사용자 계정 하나와 애플리케이션 데이터 액세스를 위한 다른 사용자 계정을 지정할 수 있습니다. 예를 들어 db_owner 역할을 Code First 마이그레이션 할당하고 애플리케이션에 db_datawriter 역할을 사용하여 db_datareader 수 있습니다. 이는 애플리케이션에서 잠재적으로 악의적인 코드가 데이터베이스 스키마를 변경하지 못하도록 하는 일반적인 심층 방어 패턴입니다. (예를 들어 SQL 삽입 공격에 성공했을 수 있습니다.) 이러한 자습서에서는 이 패턴을 사용하지 않습니다. 시나리오에서 이 패턴을 구현하려면 다음 단계를 수행합니다.

  1. 설정 탭 아래의 웹 게시 마법사에서 전체 데이터베이스 스키마 업데이트 권한이 있는 사용자를 지정하는 연결 문자열 입력합니다. 런타임 검사 이 연결 문자열 사용 상자의 선택 취소를 선택합니다. 배포된 Web.config 파일에서 연결 문자열 DatabasePublish 됩니다.

  2. 애플리케이션이 런타임에 사용할 연결 문자열 대한 Web.config 파일 변환을 만듭니다.

요약

이제 개발 컴퓨터의 IIS에 애플리케이션을 배포하고 테스트했습니다.

테스트의 홈페이지

이렇게 하면 배포 프로세스에서 애플리케이션의 콘텐츠를 올바른 위치(배포하지 않으려는 파일 제외)에 복사하고 배포 중에 웹 배포가 IIS를 올바르게 구성했는지 확인합니다. 다음 자습서에서는 아직 완료되지 않은 배포 작업을 찾는 테스트를 하나 더 실행합니다. Elm ah 폴더에 대한 폴더 사용 권한 설정.

추가 정보

Visual Studio에서 IIS 또는 IIS Express 실행하는 방법에 대한 자세한 내용은 다음 리소스를 참조하세요.