패키지 인증 경고 문제 해결 및 오류
패키지를 만들거나 Windows Azure 응용 프로그램을 게시하면 경고 또는 오류가 발생할 수 있습니다. 이러한 경고 및 오류를 통해 응용 프로그램이 배포 또는 게시되지 않는 문제를 해결할 수 있습니다. 패키징 단계에서 경고 또는 오류를 수신하여 Windows Azure 응용 프로그램을 배포하기 전에 이러한 문제를 수정하여 시간을 절약할 수 있습니다. 실패할 가능성이 있는 배포가 완료되기까지 기다리지 않아도 됩니다.
기본적으로 패키지 유효성 검사 문제는 경고로 취급되며 이로 인해 역할을 배포하지 못하는 것은 아닙니다. 기본값을 변경하고 배포를 방지하려면 이러한 경고를 빌드 오류로 처리합니다. 이렇게 하려면 Windows Azure 프로젝트에 대해 경고를 오류로 처리 속성을 true로 설정합니다. 자세한 내용은 Visual Studio에서 Windows Azure 프로젝트 구성하는 방법를 참조하십시오.
다음 표에는 Windows Azure 응용 프로그램에 대한 패키지 유효성 검사의 주요 경고 메시지와 각 메시지의 자세한 내용으로 연결되는 링크가 나와 있습니다.
오류 번호 | 메시지 | 자세한 내용 |
WAT150 | '<프로젝트 이름>' 프로젝트는 '<어셈블리 이름>' 어셈블리에 따라 달라집니다. 이 어셈블리는 패키지에 없습니다. 역할이 반드시 시작되도록 하려면 이 어셈블리를 프로젝트에 참조로 추가하고 로컬 복사 속성을 true로 설정합니다. | |
WAT151 | '<프로젝트 이름>' 프로젝트는 '<어셈블리 이름>' 어셈블리에 따라 달라집니다. 이 어셈블리는 패키지에 없으며 GAC에 설치해야 합니다. 역할이 반드시 시작되도록 하려면 이 어셈블리를 프로젝트에 참조로 추가하고 로컬 복사 속성을 true로 설정합니다. 그런 다음 역할의 시작 작업을 사용하여 어셈블리를 GAC에 추가합니다. |
|
WAT152 | '<프로젝트 이름>' 프로젝트는 '<어셈블리 이름>' 어셈블리에 따라 달라집니다. 이 어셈블리는 MSI에 의해 GAC에 설치됩니다. 역할이 반드시 시작되도록 하려면 역할의 시작 작업을 사용하여 이 MSI를 설치하거나 이 어셈블리를 프로젝트에 참조로 추가하고 로컬 복사 설정을 true로 설정합니다. |
|
WAT153 | '<프로젝트 이름>' 웹 프로젝트는 <어셈블리 이름> MVC 어셈블리에 따라 달라집니다. 이러한 어셈블리는 패키지에 추가하거나 역할에 대한 가상 컴퓨터에 설치해야 합니다. 자세한 내용은 도움말 페이지(http://go.microsoft.com/fwlink/?LinkId=218227) (페이지는 영문일 수 있음)를 참조하십시오. | |
WAT160 | '<프로젝트 이름>' 프로젝트에 '<어셈블리 이름>' 어셈블리가 포함되어 있습니다. 이 어셈블리에 Windows Azure에서 IIS가 사용하는 64비트 프로세서 아키텍처와 호환되지 않습니다. 역할이 반드시 시작되도록 하려면 이 어셈블리를 이 아키텍처와 호환되는 어셈블리로 교체해야 합니다. | IIS에서 32비트 응용 프로그램을 실행하도록 구성하는 시작 작업이 있는 경우 이 경고 메시지를 무시할 수 있습니다. 자세한 방법은 시작 작업을 사용하여 IIS 응용 프로그램 풀에 32비트 응용 프로그램 모드 활성화(페이지는 영문일 수 있음)를 참조하십시오. 그렇지 않으면 프로젝트에서 어셈블리를 제거하고 64비트 프로세서 아키텍처와 호환되는 어셈블리를 추가합니다. 그런 다음 응용 프로그램을 다시 패키징하거나 게시합니다. |
WAT170 | '<설정 이름>' 구성 설정이 '<파일 이름>' 구성 파일에서 '<역할 이름>' 역할에 대한 로컬 저장소 에뮬레이터를 사용하도록 설정되어 있습니다. Windows Azure 저장소 서비스에 액세스하려면 유효한 Windows Azure 저장소 연결 문자열을 입력해야 합니다. | 유효한 Windows Azure 저장소 연결 문자열을 추가하는 방법에 대한 자세한 내용은 Visual Studio에서 클라우드 서비스를 게시하는 데 필요한 서비스 설정을 참조하십시오. |
WAT180 | 유효성 검사 오류로 인해 패키지 만들기가 실패했습니다. 오류를 해결하거나 이 Windows Azure 프로젝트에 대한 "경고를 오류로 처리" 속성을 false로 설정해야 합니다. | 경고를 오류로 처리 속성을 설정하는 방법에 대한 자세한 내용은 Visual Studio에서 Windows Azure 프로젝트 구성하는 방법을 참조하십시오. |
WAT190 | '<프로젝트 이름>' 프로젝트는 '<.Net Framework 버전>'을 대상으로 합니다. 역할이 반드시 시작되도록 하려면 이 역할의 가상 시스템에 이 버전의 .NET Framework가 설치되어 있어야 합니다. 필요한 버전이 Windows Azure 게스트 OS의 일부로 이미 설치되어 있지 않은 경우 시작 작업을 사용하여 필요한 버전을 설치할 수 있습니다. | |
WAT230 | 연결 문자열 'DefaultConnection'이 로컬 데이터베이스를 사용하고 있습니다. '<프로젝트 이름>' 프로젝트의 \SQLEXPRESS'. 이 연결 문자열은 이 응용 프로그램을 Windows Azure에서 실행할 경우 작동하지 않습니다. 다른 데이터베이스에 액세스하려면 web.config 파일의 연결 문자열을 업데이트해야 합니다. 자세한 내용은 도움말 페이지(http://go.microsoft.com/fwlink/?LinkId=224877) (페이지는 영문일 수 있음)를 참조하십시오. |
역할이 시작되지 않으면 패키지 빌드/배포 출력 창을 확인해서 유효성 확인 경고 또는 오류가 없는지 확인해야 합니다. 응용 프로그램을 게시할 때 원격 데스크톱 연결을 설정하면 가상 컴퓨터에 액세스하고 모든 문제를 진단할 수 있습니다. Windows Azure에 원격 데스크톱을 사용하는 방법에 대한 자세한 내용은 Windows Azure 역할과 함께 원격 데스크톱 사용을 참조하십시오.
역할이 시작되지 않는 이유를 확인하는 다른 방법은 배포에 IntelliTrace를 활성화하는 것입니다. Windows Azure 응용 프로그램에 IntelliTrace를 활성화하는 방법에 대한 자세한 내용은 IntelliTrace 및 Visual Studio를 사용하여 게시된 클라우드 서비스 디버깅하기을 참조하십시오.
다른 역할 실패 문제의 해결 방법은 Troubleshooting Roles that Fail to Start을 참조하십시오.
가상 컴퓨터에서 역할을 만들면 가상 컴퓨터를 만든 후부터 역할이 시작되기 전까지 실행되는 시작 작업을 추가하려는 경우가 있습니다. 이 작업으로 역할을 성공적으로 시작할 수 없습니다. 예를 들어 다음 작업 중 하나를 수행하려는 경우가 있습니다.
.MSI를 설치합니다.
GAC에 어셈블리를 추가합니다.
역할에 필요한 특정 버전의 .NET Framework를 설치합니다.
역할에 추가하는 시작 작업이 명령줄에서 실행됩니다. 명령 집합을 실행하는 배치 파일을 만들거나 실행하려는 특정 명령을 추가할 수 있습니다. 서비스 패키지가 배포될 때 시작 작업에 대한 파일이 추가되도록 해당 파일을 프로젝트에 추가합니다. 그런 다음 해당 역할의 가상 컴퓨터가 만들어지면 이러한 파일을 사용하여 시작 작업이 실행됩니다.
중요 |
|---|
시작 작업에 대한 파일이 하위 디렉터리에 있는 경우 명령이 가상 컴퓨터에서 실행될 때 시작 작업이 배치 파일의 디렉터리에 액세스해야 할 수 있습니다. 다음 변수를 사용하여 배치 파일의 디렉터리에 액세스할 수 있습니다: %~dp0. 이 변수에는 배치 파일에 대한 드라이브와 경로가 포함되어 있으며 경로 마지막에 백슬래시를 추가합니다. 예를 들어 다음 명령을 사용하여 배치 파일과 같은 폴더에 있는.exe 파일(StartUp.exe)을 사용할 수 있습니다: %~dp0StartUp.exe. |
역할의 시작 작업을 만들려면
(선택 사항) 시작 작업에 대해 명령 집합을 함께 실행하려는 경우 배치 파일을 만들 수 있습니다. 시작 작업을 실행하기 위해 만드는 파일에는 바이트 순서 표시가 없어야 합니다. 이 문제를 방지하려면 메모장을 사용하여 시작 작업을 실행하기 위한 파일을 만들거나 Visual Studio에서 만든 파일을 인코딩하여 저장해야 합니다. 파일을 Visual Studio에서 인코딩하여 저장하려면 다음 절차를 따르십시오.
파일을 Visual Studio에서 인코딩하여 저장하려면 파일이 Visual Studio 편집기 창에 표시되는지 확인해야 합니다. 메뉴 표시줄에서 파일, 다른 이름으로 파일 <Filename> 저장을 선택합니다.
다른 이름으로 파일 저장 대화 상자가 표시됩니다.
파일을 인코딩하여 저장하려면 저장 단추의 드롭다운 화살표를 선택하고 인코딩하여 저장을 선택합니다.
고급 저장 옵션 대화 상자가 표시됩니다.
인코딩 목록에서 유니코드(서명 없는 UTF-8) - 코드 페이지 65001을 선택한 다음 확인 단추를 선택합니다.
시작 작업의 폴더를 추가하려면 시작 작업이 필요한 역할에 대한 프로젝트에 폴더를 만듭니다. 예를 들어 .MSI를 설치해야 하는 WebRole1 이라는 웹 역할 프로젝트인 경우 이 웹 역할 프로젝트에 Startup이라는 폴더를 추가합니다.
이 폴더에 파일을 추가하려면 폴더의 바로 가기 메뉴를 열고 추가, 기존 항목을 선택합니다. 배치 파일을 포함하여 시작 작업에 필요한 파일을 선택한 다음 추가 단추를 선택합니다.
파일은 만든 폴더의 솔루션 탐색기에 표시됩니다.
이러한 파일을 서비스 패키지에 포함하되 이러한 파일을 빌드하지 않으려면 각 파일에 대한 바로 가기 메뉴를 연 다음 속성을 선택합니다. 속성 보기의 빌드 작업 드롭다운 목록에서 없음을 선택하고 출력 디렉터리로 복사 드롭다운 목록에서 변경된 내용만 복사를 선택합니다.
역할에 시작 작업을 추가하려면 ServiceDefinition.csdef 서비스 정의 파일에 대한 바로 가기 메뉴를 열고 열기를 선택합니다. 이 시작 작업이 필요한 역할 요소에 다음 XML 문을 추가합니다. 이 명령은 사용자가 Startup이라는 시작 작업에 대해 폴더를 만들었고 이 배치 파일 또는 명령에 높은 권한이 필요하다는 것을 가정합니다. 명령은 .exe 파일, 배치 파일,.msi 파일 또는 유효한 모든 명령줄 문이 될 수 있습니다.
<Startup> <Task commandLine="startup\<command>" executionContext="elevated" taskType="simple" /> </Startup>
추가 시작 작업이 추가된 서비스 정의 파일의 webrole 요소의 예는 다음과 같습니다.
<WebRole name="WebRole1"> <Sites> <Site name="Web"> <Bindings> <Binding name="Endpoint1" endpointName="Endpoint1" /> </Bindings> </Site> </Sites> <Endpoints> <InputEndpoint name="Endpoint1" protocol="http" port="80" /> </Endpoints> <Imports> <Import moduleName="Diagnostics" /> <Import moduleName="RemoteAccess" /> <Import moduleName="RemoteForwarder" /> </Imports> <Startup> <Task commandLine="startup\StartUpTask.cmd" executionContext="elevated" /> </Startup> </WebRole>시작 작업이 실행되는지 확인하려면 Windows Azure 응용 프로그램을 게시합니다. 필요할 경우 응용 프로그램을 게시할 때 역할에 대한 가상 컴퓨터의 원격 데스크톱 연결을 만들 수 있습니다. 그런 다음 가상 컴퓨터에 연결하고 시작 작업이 올바르게 실행되었는지 확인할 수 있습니다. Windows Azure 역할로 원격 데스크톱을 사용하는 방법에 대한 자세한 내용은 Windows Azure 역할과 함께 원격 데스크톱 사용을 참조하십시오.
역할에 대한 시작 작업을 만드는 방법의 자세한 단계는 How to Define Startup Tasks for a Role을 참조하십시오. 시작 작업에 환경 변수를 사용해야 하는 경우 서비스 정의 파일의 역할에 대해 환경 변수를 정의할 수 있습니다. 이에 대한 자세한 내용은 How to Define Environment Variables Before a Role Starts을 참조하십시오.
역할의 시작 작업에 대한 추가 정보의 링크는 Starting Tasks Before Role Instances Start in Windows Azure을 참조하십시오.
웹 역할로서의 MVC 프로젝트를 Windows Azure에 게시하려면 Windows Azure에서 웹 역할이 실행될 때 필요한 모든 MVC 어셈블리를 사용할 수 있어야 합니다. 최신 Windows Azure Tools for Visual Studio에서 제공하는 템플릿을 사용하여 MVC 프로젝트를 웹 역할로 만들면 필요한 어셈블리가 서비스 패키지로 자동 추가됩니다. 이 경우 서비스 패키지가 만들어질 때 MVC 어셈블리가 없다는 경고 메시지가 나타나지 않습니다.
MVC 어셈블리가 없는 경고 메시지를 수정하려면 MVC 프로젝트에 적용되는 절차의 단계를 수행해야 합니다.
기존 MVC3 프로젝트에 대한 어셈블리를 추가하려면
Visual Studio 서비스 팩 1을 사용하여 Windows Azure 응용 프로그램을 게시하는 경우 다음 단계에 따라 참조를 어셈블리에 추가하고 서비스 패키지에 포함시킵니다.
MVC 프로젝트에 대한 바로 가기 메뉴를 열고 배포 가능한 종속성 추가를 선택합니다.
배포 가능한 종속성 추가 대화 상자가 표시됩니다.
ASP.NET MVC 확인란을 선택하고 확인 단추를 선택합니다.
이제 서비스 패키지를 만들면 어셈블리가 추가됩니다. 그런 다음 서비스 패키지가 배포될 때 이 역할에 대한 가상 컴퓨터에 어셈블리가 설치됩니다.
Windows Azure 응용 프로그램을 게시하는 데 Visual Studio 서비스 팩 1을 사용하지 않는 경우 Windows Azure에 Windows Azure 응용 프로그램을 배포할 경우 올바르게 실행된다는 것을 확인하기 위해 다음 작업 중 하나를 수행할 수 있습니다.
웹 역할 프로젝트에 다음 어셈블리에 대한 참조를 추가한 다음 로컬 복사 속성을 True로 설정합니다.
Microsoft.Web.Infrastructure
System.Web.Helpers
System.Web.Mvc
System.Web.Razor
System.Web.WebPages
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
참고어셈블리의 참조를 웹 역할 프로젝트에 추가하는 방법에 대한 자세한 내용은 Include Files in the Service Package을 참조하십시오.
MVC3 어셈블리를 설치하려면 웹 역할에 시작 작업을 추가합니다. 시작이라는 프로젝트에 폴더를 만듭니다. 그런 다음 이 폴더에 AspNetMVC3Setup.exe 파일을 추가합니다. 마지막으로 이 XML을 웹 역할 요소 내의 서비스 정의 파일에 추가합니다.
<Startup> <Task commandLine="startup\AspNetMVC3Setup.exe /q /log mvc3_install.htm" executionContext="elevated" /> </Startup>
참고MVC3 어셈블리의 시작 작업 추가에 대한 Blog 항목 읽기(페이지는 영문일 수 있음). 시작 작업에 대한 자세한 내용은 이전 섹션: 역할 시작 작업 만들기를 참조하십시오.
기존 MVC2 프로젝트에 대한 어셈블리를 추가하려면
MVC2 프로젝트에 이 경고 메시지가 나타나면 System.Web.Mvc 어셈블리에 대한 참조가 웹 역할 프로젝트에 이미 추가되지 않았기 때문입니다. 이 어셈블리를 서비스 패키지에 포함하려면 이 어셈블리에 대한 바로 가기 메뉴를 열고 속성을 선택합니다.
속성 창이 표시됩니다.
로컬 복사 목록에서 True를 선택합니다.
Windows Azure tools for Visual Studio로 MVC 3 웹 역할을 만들면 웹 역할이 범용 ASP.Net 제공자를 사용하도록 설정됩니다. 기본적으로 이러한 공급자는 DefaultConnection 연결 문자열에 대한 로컬 SQL Express 데이터베이스를 사용하도록 구성되어 있습니다. Windows Azure 응용 프로그램을 게시할 경우, Windows Azure에 의해 호스팅되는 SQL 데이터베이스를 사용하도록 연결 문자열을 변경해야 합니다.
중요 |
|---|
Windows Azure에 의해 호스팅되는 SQL 데이터베이스를 사용하기 위한 구독이 있어야 합니다. Windows Azure 관리 포털에서 구독을 액세스하는 경우 구독에서 제공하는 서비스를 결정할 수 있습니다. 연결 문자열을 변경하는 방법에 대한 자세한 내용은 Visual Studio에서 Windows Azure에 웹 응용 프로그램을 마이그레이션하고 게시하는 방법를 참조하십시오. |
중요