다음을 통해 공유


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 버전을 표시하려면 Azure Portal에서 앱으로 이동합니다. 개발 도구> 선택합니다. 이동을 선택합니다. Kudu에서 CMD 또는 PowerShell에 대한 디버그 콘솔을 선택합니다. 브라우저 기반 콘솔에서 적절한 명령을 실행합니다.

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에서 오래된 런타임은 어떻게 되나요?

오래된 런타임은 유지 관리 조직에서 더 이상 사용되지 않거나 심각한 취약성이 있는 것으로 확인됩니다. 따라서 포털의 만들기 및 구성 페이지에서 제거됩니다. 오래된 런타임이 포털에서 숨겨지면 해당 런타임을 계속 사용하는 모든 앱이 계속 실행됩니다.

더 이상 포털에 표시되지 않는 오래된 런타임 버전으로 앱을 만들려면 Azure CLI, ARM 템플릿 또는 Bicep을 사용합니다. 이러한 배포 대안을 사용하면 포털에서 제거되었지만 여전히 지원되는 사용되지 않는 런타임을 만들 수 있습니다.

런타임이 App Service 플랫폼에서 완전히 제거된 경우 Azure 구독 소유자는 제거 전에 이메일 알림을 받습니다.

환경 변수에 액세스

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 값을 사용하면 프로덕션 설정으로 프로덕션 환경에서 앱을 실행할 수 있습니다. 연결 문자열은 동일한 방식으로 작동합니다. 이러한 방식으로 코드를 변경하지 않고도 애플리케이션 비밀을 코드 리포지토리 외부에 유지하고 적절한 값에 액세스할 수 있습니다.

참고 항목

연결 비밀이 전혀 필요하지 않은 더 안전한 연결 옵션을 고려합니다. 자세한 내용은 Azure 앱 Service에서 Azure 서비스 및 데이터베이스에 대한 보안 연결을 참조하세요.

다중 프로젝트 솔루션 배포

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 파일을 열고 <customErrors mode="Off"/> 요소 아래에 <system.web> 요소를 추가합니다. 예시:

<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

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

진단 로깅을 켠 후 다음 명령을 실행하여 로그 스트림을 확인합니다.

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

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

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

추가 리소스