Visual Studio에서 ASP.NET 또는 ASP.NET Core 앱 디버그

Visual Studio에서 ASP.NET 또는 ASP.NET Core 앱을 디버그할 수 있습니다. 프로세스는 ASP.NET과 ASP.NET Core 간에 다르고, IIS Express 또는 로컬 IIS 서버에서 실행하는지 여부에 따라서도 다릅니다.

참고

다음 단계와 설정은 로컬 서버에서 앱을 디버깅하는 경우에만 적용됩니다. 원격 IIS 서버에서 앱을 디버깅하는 경우 프로세스에 연결이 사용되며, 이러한 설정은 무시됩니다. IIS의 ASP.NET 앱 원격 디버깅에 대한 자세한 내용 및 지침은 IIS 컴퓨터의 ASP.NET 원격 디버그 또는 원격 IIS 컴퓨터의 ASP.NET Core 원격 디버그를 참조하세요.

기본 제공 Kestrel 및 IIS Express 서버는 Visual Studio에 포함되어 있습니다. Kestrel은 ASP.NET Core 프로젝트에 대한 기본 디버그 서버이며 미리 구성되어 있습니다. IIS Express는 ASP.NET에 대한 기본 디버그 서버입니다.

기본 제공되는 IIS Express 서버가 Visual Studio에 포함되어 있습니다. IIS Express는 ASP.NET 및 ASP.NET Core 프로젝트에 대한 기본 디버그 서버이며 미리 구성되어 있습니다. 이는 가장 쉬운 디버깅 방법으로, 초기 디버깅 및 테스트에 이상적입니다.

ASP.NET Core의 경우 Kestrel 웹 서버에서도 디버그할 수 있습니다.

로컬 IIS 서버에 대한 필수 구성 요소

또한 앱을 실행하도록 구성된 로컬 IIS 서버(8.0 버전 이상)에서도 ASP.NET 또는 ASP.NET Core 앱을 디버그할 수 있습니다. 로컬 IIS에서 디버그를 수행하려면 다음 요구 사항을 충족해야 합니다.

  • 설치되지 않은 경우 ASP.NET 및 웹 개발 워크로드를 설치합니다. (Visual Studio 설치 관리자를 다시 실행하고 수정을 선택하여 이 워크로드를 추가합니다.)

  • Visual Studio를 관리자 권한으로 실행합니다.

  • IIS를 설치하고 적절한 ASP.NET 및/또는 ASP.NET Core 버전으로 올바르게 구성합니다. ASP.NET Core에서 IIS를 사용하는 방법에 대한 자세한 내용은 IIS를 사용하여 Windows에서 ASP.NET Core 호스트를 참조하세요. ASP.NET는 IIS 및 ASP.NET 모듈 설치를 참조하세요.

  • 앱이 오류 없이 IIS에서 실행되는지 확인합니다.

ASP.NET Core 앱 디버그

https를 기반으로 하는 기본 프로필 또는 프로젝트 이름을 기반으로 하는 프로필이 있을 수 있으며, Kestrel 웹 서버에 대해 구성됩니다. 대신 로컬 IIS에서 디버깅하는 경우 로컬 IIS 디버깅에 대한 요구 사항을 충족하는지 확인합니다.

  1. Visual Studio 솔루션 탐색기에서 ASP.NET Core 프로젝트를 선택하고 속성 아이콘을 클릭하거나, Alt+Enter 키를 누르거나, 속성을 마우스 오른쪽 단추로 클릭하여 선택합니다.

  2. 디버그 탭을 선택하고 링크를 클릭하여 디버그 시작 프로필 UI 열기를 엽니다.

    표시되는 UI는 프로젝트의 launchSettings.json 파일의 설정에 해당합니다. 이 파일에 대한 자세한 내용은 ASP.NET Core에서 여러 환경 사용의 개발 및 launchSettings.json 섹션을 참조하세요.

  3. 디버깅을 위해 구성할 프로필을 선택합니다.

    • Kestrel의 경우 https 프로필 또는 프로젝트의 이름을 따서 명명된 프로필을 선택합니다.
    • IIS Express의 경우 드롭다운에서 IIS Express를 선택합니다.
    • 로컬 IIS의 경우 새로 만들기를 선택하고 새 IIS 프로필을 만듭니다.
  4. 브라우저 시작이 선택되어 있는지 확인합니다.

  5. URL, 앱 URL앱 SSL URL이 올바른지 확인합니다.

    Url은 .NET 또는 .NET Core에 대한 호스트 URL의 위치를 지정합니다. 프로젝트를 따라 이름이 지정된 프로필의 경우(즉, launchSettings.json의 commandName 속성이 Project인 경우) Kestrel 서버는 지정된 포트를 수신 대기합니다. IIS 프로필의 경우 이 값은 일반적으로 앱 URL 값과 같습니다. 자세한 내용은 프로젝트 구성의 IIS 시작 프로필 섹션을 참조하세요.

    앱 URL앱 SSL URL은 애플리케이션 URL을 지정합니다. 프로젝트를 따라 이름이 지정된 프로필의 경우 이 속성은 Kestrel 서버 URL을 지정합니다(일반적으로 https://localhost:5001http://localhost:5000). IIS Express의 경우 앱 SSL URL은 일반적으로 http://localhost:44334입니다.

  6. 환경 변수에서 값이 DevelopmentASPNETCORE_ENVIRONMENT가 있는지 확인합니다. 그렇지 않은 경우 변수를 추가합니다.

    ASP.NET Core 디버거 설정

    환경 변수에 관한 자세한 내용은 환경을 참조하세요.

  7. 앱을 디버그하려면 앱에서 일부 코드에서 중단점을 설정합니다. Visual Studio 도구 모음에서 구성이 디버그로 설정되어 있는지 확인합니다.

  8. 디버깅을 시작하려면 도구 모음에서 https, IIS Express 또는 <IIS 프로필 이름>과 같은 프로필 이름을 선택하고 디버그 메뉴에서 디버깅 시작을 선택하거나 F5 키를 누릅니다. 디버거가 중단점에서 일시 중지됩니다. 디버거가 중단점에 도달할 수 없는 경우 디버깅 문제 해결을 참조하세요.

ASP.NET Core 앱 디버그

IIS Express는 기본값이며 미리 구성되어 있습니다. 로컬 IIS에서 디버깅하는 경우 로컬 IIS 디버깅에 대한 요구 사항을 충족하는지 확인합니다.

  1. Visual Studio 솔루션 탐색기에서 ASP.NET Core 프로젝트를 선택하고 속성 아이콘을 클릭하거나, Alt+Enter 키를 누르거나, 속성을 마우스 오른쪽 단추로 클릭하여 선택합니다.

  2. 디버그 탭을 선택합니다.

  3. 속성 창에서 프로필 옆에 있습니다.

    • IIS Express의 경우 드롭다운에서 IIS Express를 선택합니다.
    • 로컬 IIS의 경우 드롭다운에서 앱 이름을 선택하거나 새로 만들기를 선택하고 새 프로필 이름을 만든 후, 확인을 선택합니다.
  4. 시작 옆에 있는 드롭다운 목록에서 IIS Express 또는 IIS 중 하나를 선택합니다.

  5. 브라우저 시작이 선택되어 있는지 확인합니다.

  6. 환경 변수에서 값이 DevelopmentASPNETCORE_ENVIRONMENT가 있는지 확인합니다. 그렇지 않으면 추가를 선택하여 추가합니다.

    ASP.NET Core 디버거 설정

  7. 파일>선택한 항목 저장 또는 Ctrl+S를 사용하여 변경 내용을 저장합니다.

  8. 앱을 디버그하려면 앱에서 일부 코드에서 중단점을 설정합니다. Visual Studio 도구 모음에서 구성이 디버그로 설정되어 있는지 확인하고 IIS Express 또는 새 IIS 프로필 이름이 에뮬레이터 필드에 나타나는지 확인합니다.

  9. 디버깅을 시작하려면 도구 모음에서 IIS Express 또는 <IIS 프로필 이름>을 선택하고 디버그 메뉴에서 디버깅 시작을 선택하거나 F5 키를 누릅니다. 디버거가 중단점에서 일시 중지됩니다. 디버거가 중단점에 도달할 수 없는 경우 디버깅 문제 해결을 참조하세요.

ASP.NET 앱 디버그

IIS Express는 기본값이며 미리 구성되어 있습니다. 로컬 IIS에서 디버깅하는 경우 로컬 IIS 디버깅에 대한 요구 사항을 충족하는지 확인합니다.

  1. Visual Studio 솔루션 탐색기에서 ASP.NET 프로젝트를 선택하고 속성 아이콘을 클릭하거나, Alt+Enter 키를 누르거나, 속성을 마우스 오른쪽 단추로 클릭하여 선택합니다.

  2. 탭을 선택합니다.

    탭이 표시되지 않으면 ASP.NET Core 앱 디버그를 참조하세요. 웹 탭은 ASP.NET Framework에 대해서만 표시됩니다.

  3. 속성 창의 서버에서

    • Kestrel의 경우 드롭다운에서 https를 선택합니다.
    • IIS Express의 경우 드롭다운에서 IIS Express를 선택합니다.
    • 로컬 IIS의 경우
      1. 드롭다운에서 로컬 IIS를 선택합니다.
      2. IIS에서 앱을 아직 설정하지 않은 경우 프로젝트 URL 필드 옆에 가상 디렉터리 만들기를 선택합니다.
  4. 디버거에서 ASP.NET을 선택합니다.

    ASP.NET 디버거 설정을 보여 주는 스크린샷.

  5. 파일>선택한 항목 저장을 선택하여(또는 Ctrl+S를 눌러) 변경 내용을 저장합니다.

  6. 앱을 디버그하려면 앱에서 일부 코드에서 중단점을 설정합니다. Visual Studio 도구 모음에서 구성이 디버그로 설정되어 있는지 확인하고, 원하는 브라우저가 에뮬레이터 필드에서 IIS Express(<브라우저 이름>) 또는 로컬 IIS(<브라우저 이름>)에 표시되는지 확인합니다.

  7. 디버깅을 시작하려면 도구 모음에서 IIS Express(<브라우저 이름>) 또는 로컬 IIS(<브라우저 이름>)를 선택하고 디버그 메뉴에서 디버깅 시작을 선택하거나 F5 키를 누릅니다. 디버거가 중단점에서 일시 중지됩니다. 디버거가 중단점에 도달할 수 없는 경우 디버깅 문제 해결을 참조하세요.

디버깅 문제 해결

로컬 IIS 디버깅에서 중단점을 진행할 수 없는 경우 다음 단계에 따라 문제를 해결합니다.

  1. IIS에서 웹앱을 시작하고 올바르게 실행되는지 확인합니다. 웹앱을 실행 상태로 둡니다.

  2. Visual Studio에서 디버그 > 프로세스에 연결을 선택하거나 Ctrl+Alt+P를 누르고 ASP.NET 또는 ASP.NET Core 프로세스(일반적으로 w3wp.exe 또는 dotnet.exe)에 연결합니다. 자세한 내용은 프로세스에 연결ASP.NET 프로세스의 이름 찾기 방법을 참조하세요.

프로세스에 연결을 사용할 때는 중단점에 연결하여 도달할 수 있지만, 디버그>디버깅 시작 또는 F5를 사용할 때는 수행할 수 없는 경우 프로젝트 속성의 설정이 잘못되었을 수 있습니다. HOSTS 파일을 사용하는 경우에도 올바르게 구성되었는지 확인합니다.

web.config 파일에서 디버깅 구성

ASP.NET 프로젝트에는 기본적으로 web.config 파일이 있습니다. 여기에는 디버그 설정을 포함한 앱 구성 및 시작 정보가 모두 포함됩니다. 디버깅을 위해서 web.config 파일을 올바르게 구성해야 합니다. 이전 섹션의 속성 설정에서 web.config 파일이 업데이트됩니다. 하지만 수동으로 구성할 수도 있습니다.

참고

ASP.NET Core 프로젝트에는 처음에 web.config 파일이 없지만, 앱 구성 및 시작 정보에 appsettings.jsonlaunchSettings.json 파일을 사용합니다. 앱을 배포하면 프로젝트에 web.config 파일이 생성되지만 일반적으로 디버그 정보는 포함되지 않습니다.

배포 프로세스에서 web.config 설정이 업데이트되므로 디버깅을 시도하기 전에 디버깅을 위해 web.config가 구성되었는지 확인해야 합니다.

디버깅을 위해 web.config 파일을 수동으로 구성하려면 다음을 수행합니다.

  1. Visual Studio에서 ASP.NET 프로젝트의 web.config 파일을 엽니다.

  2. Web.config는 XML 파일이므로 태그로 표시된 중첩된 섹션을 포함합니다. configuration/system.web/compilation 섹션을 찾습니다. (compilation 요소가 존재하지 않는 경우 생성합니다.)

  3. compilation 요소의 debug 특성이 true로 설정되었는지 확인합니다. (compilation 요소에 debug 특성이 포함되지 않은 경우 이를 추가하고 true로 설정합니다.)

    기본 IIS Express 서버 대신 로컬 IIS를 사용하는 경우 compilation 요소의 targetFramework 특성 값이 IIS 서버의 프레임워크와 일치하는지 확인합니다.

    web.config 파일의 compilation 요소는 다음 예제와 같습니다.

    참고

    이 예제는 web.config 파일의 일부입니다. 일반적으로 configurationsystem.web 요소에 추가 XML 섹션이 있으며 compilation 요소에는 다른 특성 및 요소가 포함될 수도 있습니다.

    <configuration>
       ...
       <system.web>
           <compilation  debug="true"  targetFramework="4.6.1" ... >
              ...
           </compilation>
       </system.web>
    </configuration>
    

ASP.NET이 web.config 파일의 변경 내용을 자동으로 검색하고 새 구성 설정을 적용합니다. 변경 내용을 적용하기 위해 컴퓨터나 IIS 서버를 다시 시작할 필요가 없습니다.

웹 사이트에는 여러 개의 가상 디렉터리 및 하위 디렉터리가 포함될 수 있으며 각 디렉터리에 web.config 파일이 있을 수도 있습니다. ASP.NET 앱은 URL 경로의 상위 수준에 있는 web.config 파일에서 구성 설정을 상속합니다. 계층적 web.config 파일 설정은 계층 구조에서 아래에 있는 모든 ASP.NET 앱에 적용됩니다. 계층 구조에서 하위 web.config 파일에 있는 다른 구성을 설정하면 상위 파일의 설정이 재정의됩니다.

예를 들어 www.microsoft.com/aaa/web.config에서 debug="true"를 지정하는 경우 aaa 폴더 또는 aaa 하위 폴더의 모든 앱은 해당 설정을 상속합니다. 단, 이러한 앱 중 하나가 자체 web.config 파일로 설정을 재정의하는 경우는 제외합니다.

Important

디버그 모드는 사용자 앱의 성능을 크게 저하시킵니다. 프로덕션 앱을 배포하거나 성능 측정을 수행하는 경우 debug="false"web.config를 설정하고 릴리스 빌드를 지정합니다.