Azure App Service용 ASP.NET 앱 구성

참고 항목

ASP.NET Core의 경우 Azure App Service용 ASP.NET Core 앱 구성을 참조하세요. ASP.NET 앱이 사용자 지정 Windows 또는 Linux 컨테이너에서 실행되는 경우 Azure App Service용 사용자 지정 컨테이너 구성을 참조하세요.

ASP.NET 앱은 컴파일된 이진 파일로 Azure App Service에 배포해야 합니다. Visual Studio 게시 도구는 솔루션을 빌드한 다음 컴파일된 이진 파일을 직접 배포하는 반면, App Service 배포 엔진은 코드 리포지토리를 먼저 배포한 다음 이진 파일을 컴파일합니다.

이 가이드는 ASP.NET 개발자를 위한 주요 개념 및 지침을 제공합니다. Azure App Service를 사용한 적이 없는 경우 ASP.NET 빠른 시작SQL Database를 사용한 ASP.NET 자습서를 먼저 따릅니다.

지원되는 .NET Framework 런타임 버전 표시

App Service의 Windows 인스턴스에는 지원되는 모든 .NET Framework 버전이 이미 설치되어 있습니다. 사용할 수 있는 .NET Framework 런타임과 SDK 버전을 표시하려면 https://<app-name>.scm.azurewebsites.net/DebugConsole로 이동한 다음 브라우저 기반 콘솔에서 다음 명령을 실행합니다.

CLR 4 런타임 버전(.NET Framework 4 이상)의 경우:

ls "D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework"

최신 .NET Framework 버전은 바로 사용하지 못할 수 있습니다.

CLR 2 런타임 버전(.NET Framework 3.5 이하)의 경우:

ls "D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework"

현재 .NET Framework 런타임 버전 표시

Cloud Shell에서 다음 명령을 실행합니다.

az webapp config show --resource-group <resource-group-name> --name <app-name> --query netFrameworkVersion

v4.0은 최신 CLR 4 버전(.NET Framework 4.x)이 사용됨을 의미합니다. 값 v2.0은 CLR 2 버전(.NET Framework 3.5)이 사용됨을 의미합니다.

.NET Framework 런타임 버전 설정

기본적으로 App Service는 지원되는 최신 .NET Framework 버전을 사용하여 ASP.NET 앱을 실행합니다. 대신 .NET Framework 3.5를 사용하여 앱을 실행하려면 Cloud Shell에서 다음 명령을 실행합니다(v2.0은 CLR 2를 의미함).

az webapp config set --resource-group <resource-group-name> --name <app-name> --net-framework-version v2.0

환경 변수에 액세스

App Service에서는 앱 코드 외부에서 앱 설정과 연결 문자열을 지정할 수 있습니다. 그런 다음 표준 ASP.NET 패턴을 사용하여 모든 클래스에서 해당 설정과 연결 문자열에 액세스할 수 있습니다.

using System.Configuration;
...
// Get an app setting
ConfigurationManager.AppSettings["MySetting"];
// Get a connection string
ConfigurationManager.ConnectionStrings["MyConnection"];
}

App Service와 web.config에서 이름이 같은 앱 설정을 구성하면 App Service 값이 web.config 값보다 우선합니다. 로컬 web.config 값을 사용하면 앱을 로컬로 디버그할 수 있지만 App Service 값을 사용하면 프로덕션 설정으로 프로덕션 환경에서 앱을 실행할 수 있습니다. 연결 문자열은 동일한 방식으로 작동합니다. 이러한 방식으로 코드를 변경하지 않고도 애플리케이션 비밀을 코드 리포지토리 외부에 유지하고 적절한 값에 액세스할 수 있습니다.

다중 프로젝트 솔루션 배포

Visual Studio 솔루션에 여러 프로젝트가 포함된 경우 Visual Studio 게시 프로세스에는 배포할 프로젝트 선택이 이미 포함되어 있습니다. Git 또는 빌드 자동화가 활성화된 ZIP 배포와 같이 App Service 배포 엔진에 배포하는 경우 App Service 배포 엔진은 App Service 앱으로 찾은 첫 번째 웹 사이트 또는 웹 애플리케이션 프로젝트를 선택합니다. PROJECT 앱 설정을 지정하여 App Service가 사용해야 하는 프로젝트를 지정할 수 있습니다. 예를 들어 Cloud Shell에서 다음을 실행합니다.

az webapp config appsettings set --resource-group <resource-group-name> --name <app-name> --settings PROJECT="<project-name>/<project-name>.csproj"

자세한 예외 페이지 가져오기

ASP.NET 앱이 Visual Studio 디버거에서 예외를 생성하는 경우 브라우저에는 상세 예외 페이지가 표시되지만 App Service에서 이 페이지는 일반 오류 메시지로 대체됩니다. App Service에서 상세 예외 페이지를 표시하려면 Web.config 파일을 열고 <system.web> 요소 아래에 <customErrors mode="Off"/> 요소를 추가합니다. 예시:

<system.web>
    <customErrors mode="Off"/>
</system.web>

업데이트된 Web.config를 사용하여 앱을 다시 배포합니다. 이제 동일한 상세 예외 페이지가 표시됩니다.

진단 로그 액세스

System.Diagnostics.Trace를 사용하여 애플리케이션 코드에서 진단 메시지를 추가할 수 있습니다. 예시:

Trace.TraceError("Record not found!"); // Error trace
Trace.TraceWarning("Possible data loss"); // Warning trace
Trace.TraceInformation("GET /Home/Index"); // Information trace

App Service의 애플리케이션 코드 내부에서 생성된 콘솔 로그에 액세스하려면 Cloud Shell에서 다음 명령을 실행하여 진단 로깅을 켭니다.

az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose

--level에 대한 가능한 값은 Error, Warning, InfoVerbose입니다. 각 후속 수준에는 이전 수준이 포함됩니다. 예를 들어 Error에는 오류 메시지만 포함하고 Verbose에는 모든 메시지를 포함합니다.

진단 로깅이 설정되면 다음 명령을 실행하여 로그 스트림을 확인합니다.

az webapp log tail --resource-group <resource-group-name> --name <app-name>

콘솔 로그가 즉시 표시되지 않으면 30초 후에 다시 확인합니다.

참고 항목

https://<app-name>.scm.azurewebsites.net/api/logs/docker의 브라우저에서 로그 파일을 검사할 수도 있습니다.

언제든지 로그 스트리밍을 중지하려면 Ctrl+C를 입력합니다.

추가 리소스