다음을 통해 공유


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

Visual Studio에서 ASP.NET 및 ASP.NET Core 앱을 디버그할 수 있습니다. 프로세스는 ASP.NET 및 ASP.NET Core와 IIS Express 또는 로컬 IIS 서버에서 실행하는지 간에 다릅니다.

메모

다음 단계 및 설정은 로컬 서버의 앱 디버깅에만 적용됩니다. 원격 IIS 서버의 디버깅 앱은 프로세스 연결사용하고 이러한 설정을 무시합니다. 원격 디버깅 ASP.NET 및 ASP.NET Core에 대한 자세한 정보와 지침은 원격 IIS 컴퓨터에서 원격 디버그 ASP.NET Core원격 디버그 Azure App Service를 참조하세요.

기본 제공 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를 실행합니다.

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

  • 앱이 IIS에서 실행되고 브라우저에서 열리는지 확인합니다.

ASP.NET Core 앱 디버그

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

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

  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 Core 또는 .NET 5 이상에 대한 호스트 URL의 위치를 지정합니다. 프로젝트의 이름을 따서 명명된 프로필의 경우(즉, launchSettings.json commandName 속성이 Project ), Kestrel 서버는 지정된 포트를 수신 대기합니다. IIS 프로필의 경우 일반적으로 앱 URL동일한 값입니다. 프로젝트 구성의IIS 시작 프로필 섹션을 참조하여 자세한 정보를 확인하세요.

    앱 URL앱 SSL URL 애플리케이션 URL을 지정합니다.

    • https 프로필의 경우 앱 URL 속성은 일반적으로 https://localhost:7241;http://localhost:5175.
    • 프로젝트의 이름을 따서 명명된 프로필의 경우 이러한 속성은 일반적으로 http://localhost:5000https://localhost:5001.
    • 일반적으로 IIS Express의 경우 앱 SSL URL은(는) https://localhost:44334입니다.
  6. 환경 변수아래에서, ASPNETCORE_ENVIRONMENTDevelopment값으로 존재하는지 확인합니다. 그렇지 않은 경우 변수를 추가합니다.

    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+입력을 누르거나 마우스 오른쪽 단추를 클릭하고 속성선택합니다.

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

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

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

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

  6. 환경 변수에서 ASPNETCORE_ENVIRONMENTDevelopment값으로 설정되어 있는지 확인하십시오. 그렇지 않은 경우 추가를 선택한 다음을 추가하십시오.

    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+입력을 누르거나 마우스 오른쪽 단추를 클릭하고 속성선택합니다.

  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.configdebug="true" 지정하는 경우 aaa 폴더 또는 aaa 하위 폴더에 있는 모든 앱은 해당 설정을 상속합니다( 해당 앱 중 하나가 고유한 web.config 파일로 설정을 재정의하는 경우 제외).

중요하다

디버그 모드는 앱의 성능을 크게 줄입니다. 프로덕션 앱을 배포하거나 성능 측정을 수행할 때, web.config에서 debug="false"을 설정하고 '릴리스 빌드'를 지정하세요.