IIS가 있는 Windows에서 ASP.NET Core 호스팅

원본참조

지원되는 운영 체제

지원되는 운영 체제는 다음과 같습니다.

  • Windows 7 이상
  • Windows Server 2008 R2 이상

HTTP.sys 서버(이전의 WebListener)는 IIS를 사용하는 역방향 프록시 구성에서 작동하지 않습니다. Kestrel 서버를 사용합니다.

응용 프로그램 구성

IISIntegration 구성 요소 사용

일반적인 Program.cs는 CreateDefaultBuilder를 호출하여 호스트 설정을 시작합니다. CreateDefaultBuilder는 Kestrel을 웹 서버로 구성하고 ASP.NET Core 모듈의 기본 경로 및 포트를 구성하여 IIS 통합을 구현합니다.

C#
public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        ...

ASP.NET Core 모듈은 동적 포트를 생성하여 백 엔드 프로세스에 할당합니다. UseIISIntegration 메서드는 동적 포트를 선택하고 http://localhost:{dynamicPort}/에서 수신 대기하도록 Kestrel을 구성합니다. 이는 UseUrls 또는 Kestrel의 수신 API에 대한 호출과 같은 다른 URL 구성을 재정의합니다. 따라서 모듈을 사용하는 경우 UseUrls에 대한 호출 또는 Kestrel의 Listen API가 필요하지 않습니다. UseUrls 또는 Listen을 호출하는 경우 Kestrel은 IIS 없이 앱을 실행할 때 지정된 포트에서 수신 대기합니다.

호스팅에 대한 자세한 내용은 ASP.NET Core의 호스트를 참조하세요.

IIS 옵션

IIS 옵션을 구성하려면 ConfigureServices에 IISOptions에 대한 서비스 구성을 포함합니다. 다음 예제에서는 HttpContext.Connection.ClientCertificate를 채우기 위해 클라이언트 인증서를 앱에 전달하는 옵션이 사용하지 않도록 설정되었습니다.

C#
services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
옵션 기본 설정
AutomaticAuthentication true true이면 IIS 통합 미들웨어가 Windows 인증에 의해 인증된 HttpContext.User를 설정합니다. false이면 미들웨어가 HttpContext.User에게 ID만 제공하고, AuthenticationScheme에서 명시적으로 요청될 때 챌린지에 응답합니다. IIS에서 Windows 인증은 AutomaticAuthentication이 작동하기 위해 사용하도록 설정되어야 합니다. 자세한 내용은 Windows 인증 항목을 참조하세요.
AuthenticationDisplayName null 로그인 페이지에서 사용자에게 나타나는 표시 이름을 설정합니다.
ForwardClientCertificate true true면서 MS-ASPNETCORE-CLIENTCERT 요청 헤더가 있는 경우 HttpContext.Connection.ClientCertificate가 채워집니다.

프록시 서버 및 부하 분산 장치 시나리오

체계(HTTP/HTTPS) 및 요청이 시작된 원격 IP 주소를 전달하도록 전달된 헤더 미들웨어를 구성하는 IIS 통합 미들웨어 및 ASP.NET Core 모듈을 구성합니다. 추가 프록시 서버 및 부하 분산 장치 외에도 호스팅되는 앱에 추가 구성이 필요할 수 있습니다. 자세한 내용은 프록시 서버 및 부하 분산 장치를 사용하도록 ASP.NET Core 구성을 참조하세요.

web.config 파일

web.config 파일은 ASP.NET Core 모듈을 구성합니다. web.config의 생성, 변환 및 게시는 .NET Core Web SDK(Microsoft.NET.Sdk.Web)에서 처리됩니다.SDK는 프로젝트 파일을 기반으로 해서 설정됩니다.

XML
<Project Sdk="Microsoft.NET.Sdk.Web">

프로젝트에 web.config 파일이 없는 경우, ASP.NET Core 모듈을 구성하기 위해 올바른 processPath 및 인수로 파일이 생성되어 게시된 출력으로 이동됩니다.

프로젝트에 web.config 파일이 있는 경우, ASP.NET Core 모듈을 구성하기 위해 올바른 processPath 및 인수로 파일이 변환되어 게시된 출력으로 이동됩니다. 변환은 이 파일의 IIS 구성 설정을 수정하지 않습니다.

web.config 파일은 활성 IIS 모듈을 제어하는 추가 IIS 구성 설정을 제공할 수 있습니다. ASP.NET Core 앱을 사용하여 요청을 처리할 수 있는 IIS 모듈에 대한 자세한 내용은 IIS 모듈 항목을 참조하세요.

웹 SDK가 web.config 파일을 변환하지 못하게 하려면 프로젝트 파일의 <IsTransformWebConfigDisabled> 속성을 사용합니다.

XML
<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

웹 SDK가 파일을 변환하지 않도록 설정하는 경우 개발자가 processPath 및 인수를 수동으로 설정해야 합니다. 자세한 내용은 ASP.NET Core 모듈 구성 참조를 참조하세요.

web.config 파일 위치

IIS 및 Kestrel 서버 간의 역방향 프록시를 만들려면 배포된 앱의 콘텐츠 루트 경로(일반적으로 앱 기본 경로)에 web.config 파일이 있어야 합니다. IIS에 제공되는 웹 사이트 실제 경로와 동일한 위치입니다. 웹 배포를 사용하여 여러 앱을 게시하도록 설정하려면 앱의 루트에 web.config 파일이 있어야 합니다.

중요한 파일은 <assembly>.runtimeconfig.json<assembly>.xml(XML 문서 주석) 및 <assembly>.deps.json과 같은 앱의 실제 경로에 있습니다.web.config 파일이 있고 사이트가 정상적으로 시작되면 IIS는 이러한 중요한 파일이 요청되어도 제공하지 않습니다. web.config 파일이 없거나, 이름이 잘못 지정되었거나, 정상적으로 시작되도록 사이트를 구성할 수 없는 경우 IIS에서 중요한 파일을 공개적으로 제공할 수도 있습니다.

web.config 파일이 항상 배포에 있어야 하며, 올바르게 이름이 지정되고, 정상적으로 시작되도록 사이트를 구성할 수 있어야 합니다. 프로덕션 배포에서 web.config 파일을 제거하지 마세요.

IIS 구성

Windows Server 운영 체제

웹 서버(IIS) 서버 역할을 사용하도록 설정하고 역할 서비스를 설정합니다.

  1. 관리 메뉴 또는 서버 관리자의 링크를 통해 역할 및 기능 추가 마법사를 사용합니다. 서버 역할 단계에서 웹 서버(IIS) 확인란을 선택합니다.서버 역할 선택 단계에서 선택된 웹 서버 IIS 역할
  2. 기능 단계 후에는 웹 서버(IIS)에 대한 역할 서비스 단계가 로드됩니다. 원하는 IIS 역할 서비스를 선택하거나 제공된 기본 역할 서비스를 적용합니다.역할 서비스 선택 단계에서 선택된 기본 역할 서비스Windows 인증(선택 사항)
    Windows 인증을 사용하도록 설정하려면 웹 서버 > 보안 노드를 확장합니다. Windows 인증 기능을 선택합니다. 자세한 내용은 Windows 인증 <windowsAuthentication> 및 Windows 인증 구성을 참조하세요.

    WebSockets(선택 사항)
    WebSockets는 ASP.NET Core 1.1 이상에서 지원됩니다. WebSockets를 사용하도록 설정하려면 웹 서버 > 응용 프로그램 개발 노드를 확장합니다.WebSocket 프로토콜 기능을 선택합니다. 자세한 내용은 WebSocket을 참고하시기 바랍니다.

  3. 확인 단계를 진행하여 웹 서버 역할 및 서비스를 설치합니다. 웹 서버(IIS) 역할을 설치한 후에 서버/IIS를 다시 시작할 필요는 없습니다.

Windows 데스크톱 운영 체제

IIS 관리 콘솔 및 World Wide Web 서비스를 사용하도록 설정합니다.

  1. 제어판 > 프로그램 > 프로그램 및 기능 > Windows 기능 Windows 기능 사용/사용 안 함(화면 왼쪽)으로 차례로 이동합니다.
  2. 인터넷 정보 서비스 노드를 엽니다. 웹 관리 도구 노드를 엽니다.
  3. IIS 관리 콘솔 확인란을 선택합니다.
  4. World Wide Web 서비스 확인란을 선택합니다.
  5. World Wide Web 서비스의 기본 기능을 그대로 사용하거나 IIS 기능을 사용자 지정합니다.Windows 인증(선택 사항)
    Windows 인증을 사용하도록 설정하려면 World Wide Web 서비스 > 보안 노드를 확장합니다. Windows 인증 기능을 선택합니다. 자세한 내용은 Windows 인증 <windowsAuthentication> 및 Windows 인증 구성을 참조하세요.WebSockets(선택 사항)
    WebSockets는 ASP.NET Core 1.1 이상에서 지원됩니다. WebSockets를 사용하도록 설정하려면 World Wide Web 서비스 > 응용 프로그램 개발 기능 노드를 확장합니다. WebSocket 프로토콜 기능을 선택합니다. 자세한 내용은 WebSocket을 참고하시기 바랍니다.
  6. IIS 설치 시 다시 시작해야 하는 경우 시스템을 다시 시작합니다.

Windows 기능에서 선택된 IIS 관리 콘솔 및 World Wide Web 서비스


.NET Core 호스팅 번들 설치

  1. 호스팅 시스템에 .NET Core 호스팅 번들을 설치합니다. 번들은 .NET Core 런타임, .NET Core 라이브러리 및 ASP.NET Core 모듈을 설치합니다. 이 모듈은 IIS와 Kestrel 서버 간에 역방향 프록시를 만듭니다. 시스템이 인터넷에 연결되지 않은 경우 Microsoft Visual C++ 2015 재배포 가능 패키지를 설치한 후에 .NET Core 호스팅 번들을 설치합니다.
    1. .NET 모든 다운로드 페이지로 이동합니다.
    2. 목록에서 미리 보기 상태가 아닌 최신 .NET Core 런타임을 선택합니다(.NET Core > 런타임 > .NET Core 런타임 x.y.z). 미리 보기 소프트웨어로 작업하려는 경우가 아니면 해당 링크 텍스트에서 “미리 보기” 또는 “rc”(릴리스 후보)라는 단어가 있는 런타임을 사용하지 마세요.
    3. .NET Core 런타임 다운로드 페이지의 Windows에서 호스팅 번들 설치 프로그램 링크를 선택하여 .NET Core 호스팅 번들을 다운로드합니다.

    중요! IIS 이전에 호스팅 번들이 설치된 경우 번들 설치를 복구해야 합니다. IIS를 설치한 후 호스팅 번들 설치 프로그램을 다시 실행합니다.

    설치 관리자가 x64 OS에서 x86 패키지를 설치하지 않도록 방지하려면 OPT_NO_X86=1 스위치를 사용하여 관리자 명령 프롬프트에서 설치 관리자를 실행합니다.

  2. 시스템을 다시 시작하거나 명령 프롬프트에서 net stop was /ynet start w3svc를 차례로 실행합니다. IIS를 다시 시작하면 설치 관리자에 의한 시스템 PATH 변경 내용이 수집됩니다.

참고

IIS 공유 구성에 대한 자세한 내용은 IIS 공유 구성을 사용하는 ASP.NET Core 모듈을 참조하세요.

Visual Studio을 사용하여 게시할 때 웹 배포 설치

웹 배포를 사용하여 앱을 서버에 배포하는 경우 최신 버전의 웹 배포를 서버에 설치합니다. 웹 배포를 설치하려면 WebPI(웹 플랫폼 설치 관리자)를 사용하거나 Microsoft 다운로드 센터에서 직접 설치 관리자를 가져옵니다. WebPI를 사용하는 것이 좋습니다. WebPI는 호스팅 공급자에 대한 독립 실행형 설치 및 구성을 제공합니다.

IIS 사이트 만들기

  1. 호스팅 시스템에서 앱의 게시된 폴더 및 파일을 포함할 폴더를 만듭니다. 앱의 배포 레이아웃은 디렉터리 구조 항목에서 설명합니다.
  2. stdout 로깅을 사용하도록 설정할 경우 ASP.NET Core 모듈 stdout 로그를 보관할 logs 폴더를 새 폴더 안에 만듭니다. 앱이 페이로드에서 logs 폴더로 배포되는 경우 이 단계를 건너뜁니다. 로컬에서 프로젝트가 빌드될 때 MSBuild에서 logs 폴더를 자동으로 만들도록 설정하는 방법에 대한 지침은 디렉터리 구조 항목을 참조하세요.

    중요

    stdout 로그는 앱 시작 오류의 문제 해결 용도로만 사용해야 합니다. 일상적인 앱 로깅에는 stdout 로깅을 사용하지 마세요. 로그 파일 크기 또는 생성되는 로그 파일 수에 대한 제한은 없습니다. 앱 풀에는 로그가 기록될 위치에 쓰기 권한이 있어야 합니다. 로그 위치에 대한 해당 경로에 있는 모든 폴더가 있어야 합니다. stdout 로그에 대한 자세한 내용은 로그 생성 및 리디렉션을 참조하세요. ASP.NET Core 앱의 로깅에 대한 자세한 내용은 로깅 항목을 참조하세요.

  3. IIS 관리자의 연결 패널에서 서버 노드를 엽니다. 사이트 폴더를 마우스 오른쪽 단추로 클릭합니다. 상황에 맞는 메뉴에서 웹 사이트 추가를 선택합니다.
  4. 사이트 이름을 제공하고 실제 경로를 앱의 배포 폴더로 설정합니다. 바인딩 구성을 제공하고 확인을 선택하여 웹 사이트를 만듭니다.[웹 사이트 추가] 단계에서 사이트 이름, 실제 경로 및 호스트 이름을 제공합니다.

    경고

    최상위 와일드카드 바인딩(http://*:80/ 및 http://+:80)을 사용하지 않아야 합니다. 최상위 와일드카드 바인딩은 보안 취약점에 앱을 노출시킬 수 있습니다. 강력한 와일드카드와 약한 와일드카드 모두에 적용됩니다. 와일드카드보다는 명시적 호스트 이름을 사용합니다. 전체 부모 도메인을 제어하는 경우 하위 도메인 와일드카드 바인딩(예: *.mysub.com)에는 이러한 보안 위험이 없습니다(취약한 *.com과 반대임).자세한 내용은 rfc7230 섹션-5.4를 참조하세요.

  5. 서버 노드에서 응용 프로그램 풀을 선택합니다.
  6. 사이트의 앱 풀을 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 기본 설정을 선택합니다.
  7. 응용 프로그램 풀 편집 창에서 .NET CLR 버전을 관리 코드 없음으로 설정합니다..NET CLR 버전에 대해 관리 코드 없음 설정ASP.NET Core는 별도의 프로세스에서 실행되며 런타임을 관리합니다. ASP.NET Core에서는 데스크톱 CLR을 로드할 필요가 없습니다. .NET CLR 버전을 관리 코드 없음으로 설정하는 것은 선택 사항입니다.
  8. 프로세스 모델 ID에 적절한 권한이 있는지 확인합니다.응용 프로그램 풀의 기본 ID(프로세스 모델 > ID)가 ApplicationPoolIdentity에서 다른 ID로 변경되면, 새 ID에 앱의 폴더, 데이터베이스 및 기타 필요한 리소스에 액세스하는 데 필요한 권한이 있는지 확인합니다. 예를 들어 앱 풀에는 앱이 파일을 읽고 쓰는 폴더에 대한 읽기 및 쓰기 권한이 필요합니다.

Windows 인증 구성(선택 사항)
자세한 내용은 Windows 인증 구성을 참조하세요.

앱 배포

호스팅 시스템에 만든 폴더에 앱을 배포합니다. 웹 배포는 배포에 권장되는 메커니즘입니다.

Visual Studio를 사용한 웹 배포

웹 배포에서 사용할 게시 프로필을 만드는 방법은 ASP.NET Core 앱 배포용 Visual Studio 게시 프로필 항목을 참조하세요. 호스팅 공급자가 게시 프로필을 제공하거나 게시 프로필을 만들 수 있도록 지원하는 경우 해당 프로필을 다운로드하고 Visual Studio 게시 대화 상자를 사용하여 가져옵니다.

게시 대화 상자 페이지

Visual Studio 외부에서 웹 배포

웹 배포는 Visual Studio 외부에서 명령줄을 통해 사용할 수도 있습니다. 자세한 내용은 웹 배포 도구를 참조하세요.

웹 배포에 대한 대안

수동 복사, Xcopy, Robocopy, PowerShell 등의 여러 방법 중 하나를 사용하여 앱을 호스팅 시스템으로 이동합니다.

IIS에 ASP.NET Core 배포에 대한 자세한 내용은 IIS 관리자를 위한 배포 리소스 섹션을 참조하세요.

웹 사이트 찾아보기

IIS 시작 페이지가 로드된 Microsoft Edge 브라우저

배포 파일이 잠겨 있음

앱이 실행 중이면 배포 폴더의 파일이 잠겨 있습니다. 잠긴 파일은 배포 중에 덮어쓸 수 없습니다. 배포에서 잠긴 파일을 해제하려면 다음 방법 중 하나를 사용하여 앱 풀을 중지합니다.

  • 웹 배포를 사용하고 프로젝트 파일에서 Microsoft.NET.Sdk.Web을 참조합니다. app_offline.htm 파일은 웹앱 디렉터리의 루트에 배치됩니다. 파일이 있는 경우 ASP.NET Core 모듈은 앱을 정상적으로 종료하고, 배포하는 동안 app_offline.htm 파일을 제공합니다. 자세한 내용은 ASP.NET Core 모듈 구성 참조를 참조하세요.
  • 서버의 IIS 관리자에서 앱 풀을 수동으로 중지합니다.
  • PowerShell을 사용하여 응용 프로그램 풀을 중지하고 다시 시작합니다(PowerShell 5 이상 필요).
    PowerShell
    $webAppPoolName = 'APP_POOL_NAME'
    
    # Stop the AppPool
    if((Get-WebAppPoolState $webAppPoolName).Value -ne 'Stopped') {
        Stop-WebAppPool -Name $webAppPoolName
        while((Get-WebAppPoolState $webAppPoolName).Value -ne 'Stopped') {
            Start-Sleep -s 1
        }
        Write-Host `-AppPool Stopped
    }
    
    # Provide script commands here to deploy the app
    
    # Restart the AppPool
    if((Get-WebAppPoolState $webAppPoolName).Value -ne 'Started') {
        Start-WebAppPool -Name $webAppPoolName
        while((Get-WebAppPoolState $webAppPoolName).Value -ne 'Started') {
            Start-Sleep -s 1
        }
        Write-Host `-AppPool Started
    }
    

데이터 보호

ASP.NET Core 데이터 보호 스택은 인증에 사용되는 미들웨어를 포함하여 여러 ASP.NET Core 미들웨어에서 사용됩니다. 사용자 코드에서 데이터 보호 API가 호출되지 않더라도 배포 스크립트 또는 사용자 코드를 통해 영구적 암호화 키 저장소를 만들도록 데이터 보호를 구성해야 합니다. 데이터 보호를 구성하지 않으면 키는 메모리에 보관되고 앱이 다시 시작되면 삭제됩니다.

키 링이 메모리에 저장된 경우 앱을 다시 시작하면 다음과 같이 됩니다.

  • 모든 쿠키 기반 인증 토큰이 무효화됩니다.
  • 사용자는 다음 요청에서 다시 로그인해야 합니다.
  • 키 링으로 보호된 데이터의 암호를 더 이상 해독할 수 없습니다. 여기에는 CSRF 토큰 및 ASP.NET Core MVC TempData 쿠키가 포함될 수 있습니다.

IIS에서 키 링을 저장하도록 데이터 보호를 구성하려면 다음 방법 중 하나를 사용합니다.

  • 데이터 보호 레지스트리키 만들기ASP.NET 앱에서 사용되는 데이터 보호 키는 앱 외부의 레지스트리에 저장됩니다. 지정된 앱의 키를 저장하려면 앱 풀에 대한 레지스트리 키를 만듭니다.WebFarm이 아닌 독립 실행형 IIS 설치의 경우 Data Protection Provision-AutoGenKeys.ps1 PowerShell 스크립트를 ASP.NET Core 앱과 함께 사용되는 각 응용 프로그램 풀에 사용할 수 있습니다. 이 스크립트는 앱의 앱 풀 작업자 프로세스 계정만 액세스할 수 있는 HKLM 레지스트리에 레지스트리 키를 만듭니다. 미사용 키는 컴퓨터 전체 키가 있는 DPAPI를 사용하여 암호화됩니다.

    웹 팜 시나리오에서는 UNC 경로를 사용하여 데이터 보호 키 링을 저장하도록 앱을 구성할 수 있습니다. 기본적으로 데이터 보호 키는 암호화되지 않습니다. 네트워크 공유에 대한 파일 권한은 앱 실행에 사용되는 Windows 계정으로 제한되어야 합니다. X509 인증서를 사용하여 미사용 키를 보호할 수도 있습니다. 사용자가 인증서를 업로드할 수 있는 메커니즘을 사용하는 것이 좋습니다. 즉 사용자의 신뢰할 수 있는 인증서 저장소에 인증서를 배치하고, 사용자의 앱이 실행되는 모든 컴퓨터에서 이 인증서를 사용할 수 있도록 합니다. 자세한 내용은 ASP.NET Core 데이터 보호 구성을 참조하세요.

  • 사용자 프로필을 로드하도록 IIS 응용 프로그램 풀 구성이 설정은 앱 풀에 대한 고급 설정 아래의 프로세스 모델 섹션에 있습니다. 사용자 프로필 로드를 True로 설정합니다. 이렇게 하면 사용자 프로필 디렉터리 아래에 키가 저장되고, 앱 풀에서 사용되는 사용자 계정과 관련된 키로 DPAPI를 사용하여 키가 보호됩니다.
  • 파일 시스템을 키 링 저장소로 사용파일 시스템을 키 링 저장소로 사용하도록 앱 코드를 조정합니다. X509 인증서를 사용하여 키 링을 보호하고 신뢰할 수 있는 인증서인지 확인합니다. 자체 서명된 인증서인 경우 신뢰할 수 있는 루트 저장소에 배치합니다.웹 팜에서 IIS를 사용하는 경우 다음을 수행합니다.
    • 모든 컴퓨터에서 액세스할 수 있는 파일 공유를 사용합니다.
    • 각 시스템에 X509 인증서를 배포합니다. 코드에 데이터 보호를 구성합니다.
  • 데이터 보호에 대한 컴퓨터 수준 정책 설정데이터 보호 시스템은 데이터 보호 API를 사용하는 모든 앱에 대한 기본 컴퓨터 수준 정책 설정을 제한적으로 지원합니다. 자세한 내용은 데이터 보호 문서를 참조하세요.

하위 응용 프로그램 구성

루트 앱 아래에 추가된 하위 앱에는 ASP.NET Core 모듈이 처리기로 포함되지 않아야 합니다. 하위 앱의 web.config 파일에 모듈이 처리기로 추가되면, 하위 앱을 찾으려고 할 때 잘못된 구성 파일을 참조하는 500.19 내부 서버 오류가 표시됩니다.

다음 예제에서는 ASP.NET Core 하위 앱에 대해 게시된 web.config 파일을 보여 줍니다.

XML
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <aspNetCore processPath="dotnet" 
      arguments=".\<assembly_name>.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

ASP.NET Core 앱 아래에 비ASP .NET Core 하위 앱을 호스팅하는 경우, 하위 앱의 web.config 파일에서 상속된 처리기를 명시적으로 제거합니다.

XML
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    <aspNetCore processPath="dotnet" 
      arguments=".\<assembly_name>.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

ASP.NET Core 모듈을 구성하는 방법에 대한 자세한 내용은 ASP.NET Core 모듈 소개 항목 및 ASP.NET Core 모듈 구성 참조를 참조하세요.

web.config를 사용하여 IIS 구성

IIS 구성은 역방향 프록시 구성에 적용되는 IIS 기능에 대한 web.config에 포함된 <system.webServer> 섹션의 영향을 받습니다. IIS가 서버 수준에서 동적 압축을 사용하도록 구성된 경우 앱의 web.config 파일에 있는 <urlCompression> 요소를 통해 사용하지 않도록 설정할 수 있습니다.

자세한 내용은 <system.webServer>에 대한 구성 참조ASP.NET Core 모듈 구성 참조 및 ASP.NET Core와 IIS 모듈을 참조하세요. 격리된 앱 풀에서 실행되는 개별 앱에 대해 환경 변수를 설정하려면(IIS 10.0 이상에서 지원됨), IIS 참조 문서에서 환경 변수 <environmentVariables> 항목의 AppCmd.exe 명령 섹션을 참조하세요.

web.config 구성 섹션

web.config에 있는 ASP.NET 4.x 앱의 구성 섹션은 ASP.NET Core 앱의 구성에 사용되지 않습니다.

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

ASP.NET Core 앱은 다른 구성 공급자를 사용하여 구성됩니다. 자세한 내용은 구성을 참고하시기 바랍니다.

응용 프로그램 풀

서버에서 여러 웹 사이트를 호스트하는 경우 각 앱을 해당 앱 풀에서 실행하여 서로 격리합니다. 이 구성은 IIS 웹 사이트 추가 대화 상자의 기본값입니다. 사이트 이름을 제공하면 해당 텍스트가 자동으로 응용 프로그램 풀 텍스트 상자로 전송됩니다. 사이트를 추가할 때 이 사이트 이름을 사용하여 새로운 앱 풀이 생성됩니다.

응용 프로그램 풀 ID

응용 프로그램 풀 ID 계정을 사용하면 도메인 또는 로컬 계정을 만들고 관리할 필요 없이 고유한 계정으로 앱을 실행할 수 있습니다. IIS 8.0 이상에서 IIS WAS(관리 작업자 프로세스)는 새로운 앱 풀의 이름으로 가상 계정을 만들고, 기본적으로 이 계정으로 앱 풀의 작업자 프로세스를 실행합니다. IIS 관리 콘솔의 응용 프로그램 풀에 대한 고급 설정 아래에서 ID가 ApplicationPoolIdentity를 사용하도록 설정되어 있는지 확인합니다.

응용 프로그램 풀 고급 설정 대화 상자

IIS 관리 프로세스는 Windows 보안 시스템에 앱 풀 이름이 포함된 보안 식별자를 만듭니다. 리소스는 이 ID를 사용하여 보호할 수 있습니다. 그러나 이 ID는 실제 사용자 계정이 아니며 Windows 사용자 관리 콘솔에 표시되지 않습니다.

IIS 작업자 프로세스에서 앱에 대한 높은 액세스 권한이 필요한 경우 앱이 포함된 디렉터리에 대한 ACL(액세스 제어 목록)을 수정합니다.

  1. [Windows 탐색기]를 열고 해당 하위 디렉터리로 이동합니다.
  2. 디렉터리를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
  3. 보안 탭 아래에서 편집 단추, 추가 단추를 차례로 선택합니다.
  4. 위치 단추를 선택하고 시스템이 선택되어 있는지 확인합니다.
  5. 선택할 개체 이름 입력 영역에 IIS AppPool\<app_pool_name> 을 입력합니다. 이름 확인 단추를 선택합니다. DefaultAppPool의 경우 IIS AppPool\DefaultAppPool을 사용하는 이름을 확인합니다. 이름 확인 단추를 선택하면 개체 이름 영역에 DefaultAppPool 값이 표시됩니다. 개체 이름 영역에 앱 풀 이름을 직접 입력할 수는 없습니다. 개체 이름을 확인할 때는 IIS AppPool\<app_pool_name> 형식을 사용합니다.앱 폴더에 대한 사용자 또는 그룹 대화 상자 선택: “이름 확인”을 선택하기 전에 개체 이름 영역의 “IIS AppPool"에 앱 풀 이름 “DefaultAppPool”이 추가됩니다.
  6. 확인을 선택합니다.앱 폴더에 대한 사용자 또는 그룹 대화 상자 선택: “이름 확인”을 선택하면 개체 이름 영역에 개체 이름 “DefaultAppPool”이 표시됩니다.
  7. 읽기 및 실행 권한은 기본적으로 부여됩니다. 필요에 따라 추가 권한을 제공합니다.

ICACLS 도구를 사용하여 명령 프롬프트에서 액세스 권한을 부여할 수도 있습니다. DefaultAppPool을 예로 들면, 다음 명령이 사용됩니다.

console
ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F

자세한 내용은 icacls 항목을 참조하세요.

IIS 관리자를 위한 배포 리소스

IIS 설명서에서 IIS에 대해 자세히 알아보세요.
IIS 설명서

.NET Core 앱 배포 모델에 자세히 알아보세요.
.NET Core 응용 프로그램 배포

ASP.NET Core 모듈이 Kestrel 웹 서버에서 역방향 프록시 서버로 IIS 또는 IIS Express를 어떻게 사용하도록 허용하는지 알아봅니다.
ASP.NET Core 모듈

ASP.NET Core 앱을 호스팅하기 위해 ASP.NET Core 모듈을 구성하는 방법을 알아봅니다.
ASP.NET Core 모듈 구성 참조

게시된 ASP.NET Core 앱의 디렉터리 구조에 대해 알아봅니다.
디렉터리 구조

ASP.NET Core 앱용 활성 및 비활성 IIS 모듈과 IIS 모듈을 관리하는 방법을 살펴봅니다.
IIS 모듈

ASP.NET Core 앱의 IIS 배포에 대한 문제 진단 방법을 알아봅니다.
문제 해결

IIS에서 ASP.NET Core 앱을 호스팅할 때 일반적인 오류를 구분합니다.
Azure App Service 및 IIS에 대한 일반적인 오류 참조

추가 자료

“IIS가 있는 Windows에서 ASP.NET Core 호스팅”의 97개의 댓글

  1. After I originally left a comment I appear to have clicked on the -Notify me when new comments are added- checkbox
    and from now on whenever a comment is added I get 4 emails with the exact
    same comment. Perhaps there is a means you can remove me from that
    service? Thank you!

  2. I simply want to say I’m all new to blogging and certainly liked you’re page. More than likely I’m planning to bookmark your website . You actually have amazing article content. Appreciate it for revealing your web-site.

  3. Hello there! This post couldn’t be written any better! Reading this post reminds me of my previous room mate! He always kept chatting about this. I will forward this write-up to him. Pretty sure he will have a good read. Many thanks for sharing!

  4. Can I simply claim what an alleviation to find someone that in fact knows what theyre talking about on the net. You certainly know just how to bring a concern to light and also make it crucial. More individuals need to read this and comprehend this side of the tale. I cant believe youre not a lot more prominent because you most definitely have the gift.

  5. Great – I should certainly pronounce, impressed with your site. I had no trouble navigating through all tabs and related information ended up being truly easy to do to access. I recently found what I hoped for before you know it at all. Reasonably unusual. Is likely to appreciate it for those who add forums or anything, web site theme . a tones way for your client to communicate. Nice task.

  6. The following time I review a blog, I hope that it does not dissatisfy me as much as this one. I indicate, I recognize it was my selection to read, yet I actually believed youd have something intriguing to say. All I hear is a lot of whimpering concerning something that you can fix if you werent also hectic trying to find attention.

  7. I?m pleased, I must say. Really hardly ever do I come across a blog that?s both educative and also entertaining, and let me inform you, you have hit the nail on the head. Your idea is superior; the concern is something that insufficient people are speaking smartly about. I am really pleased that I came across this in my search for something relating to this.

  8. Howdy! Someone in my Facebook group shared this site with us so I came
    to give it a look. I’m definitely enjoying the information. I’m book-marking
    and will be tweeting this to my followers! Terrific blog and wonderful design.

  9. There are certainly a great deal of details like that to take into consideration. That is a terrific indicate bring up. I provide the ideas over as basic inspiration but clearly there are inquiries like the one you bring up where the most crucial point will be working in sincere good faith. I don?t recognize if finest techniques have actually emerged around things like that, however I make sure that your job is plainly recognized as a level playing field. Both boys as well as women really feel the influence of simply a moment?s pleasure, for the remainder of their lives.

  10. There are definitely a lot of information like that to consider. That is an excellent point to raise. I use the thoughts above as basic motivation yet clearly there are inquiries like the one you bring up where one of the most vital point will be operating in truthful good faith. I don?t know if ideal techniques have emerged around things like that, yet I make certain that your work is plainly determined as a fair game. Both kids as well as women feel the impact of just a moment?s pleasure, for the rest of their lives.

  11. I?d have to contact you here. Which is not something I usually do! I take pleasure in reviewing an article that will make individuals assume. Likewise, thanks for allowing me to comment!

  12. Aw, this was an actually good blog post. In suggestion I wish to put in composing such as this additionally? taking some time as well as real effort to make an excellent short article? but what can I say? I put things off alot as well as by no means seem to get something done.

  13. Can I just claim what a relief to discover a person that actually knows what theyre speaking about on the net. You most definitely understand just how to bring a concern to light and make it vital. More individuals need to read this and comprehend this side of the story. I cant believe youre not more prominent since you definitely have the present.

  14. When I originally commented I clicked the -Notify me when new remarks are added- checkbox as well as now each time a comment is added I get four e-mails with the same comment. Is there any way you can eliminate me from that service? Thanks!

  15. I uncovered your blog website on google and also inspect a few of your early blog posts. Remain to keep up the great run. I just additional up your RSS feed to my MSN News Reader. Looking for onward to reading more from you later on!?

  16. I am just commenting to let you understand of the really good experience my wife’s child experienced studying yuor web blog. She even learned some issues, which included what it’s like to have a marvelous giving character to get the others smoothly learn some advanced matters. You actually did more than her desires. Thank you for supplying those informative, trustworthy, educational and in addition easy tips on that topic to Kate.

  17. A powerful share, I simply given this onto a colleague who was doing a bit of evaluation on this. And he the truth is bought me breakfast because I discovered it for him.. smile. So let me reword that: Thnx for the treat! But yeah Thnkx for spending the time to discuss this, I really feel strongly about it and love studying extra on this topic. If attainable, as you turn into expertise, would you mind updating your blog with more details? It’s extremely helpful for me. Big thumb up for this blog post!

  18. This design is steller! You obviously know how to keep a reader entertained. Between your wit and your videos, I was almost moved to start my own blog (well, almost…HaHa!) Fantastic job. I really loved what you had to say

  19. I simply had to appreciate you once more. I’m not certain the things that I would’ve achieved without the opinions documented by you on my area of interest. It was before an absolute troublesome issue in my circumstances, nevertheless observing a new specialised strategy you handled the issue took me to cry over delight. Now i’m happy for this information and thus pray you know what a powerful job you have been doing training the others all through your web blog. I know that you have never come across all of us.

  20. I simply needed to say thanks yet again. I do not know the things I would’ve tried in the absence of these tactics shared by you on my field. This was a real frightful dilemma for me personally, nevertheless witnessing a skilled way you resolved the issue made me to jump with contentment. Now i am thankful for your assistance as well as sincerely hope you comprehend what an amazing job your are undertaking teaching people today via your blog. I am certain you haven’t encountered any of us.

  21. A lot of thanks for all of the work on this site. My aunt really loves carrying out investigations and it’s easy to see why. A lot of people hear all relating to the powerful mode you give good steps on this web site and as well as cause participation from website visitors on this area of interest while our child is always starting to learn a lot of things. Have fun with the rest of the new year. Your doing a useful job.

  22. My spouse and i ended up being really cheerful that Ervin managed to finish off his survey through your precious recommendations he came across from your blog. It is now and again perplexing just to be giving freely strategies that many people might have been trying to sell. And we all figure out we have the website owner to give thanks to because of that. All the illustrations you’ve made, the easy web site menu, the relationships you will help to instill – it’s many terrific, and it’s really making our son and our family reckon that this subject matter is entertaining, which is unbelievably important. Thank you for the whole lot!

  23. I definitely wanted to jot down a simple word to be able to appreciate you for the great recommendations you are posting on this site. My extended internet investigation has now been rewarded with excellent concept to exchange with my colleagues. I ‘d express that most of us website visitors are unequivocally blessed to exist in a useful place with many brilliant professionals with insightful basics. I feel very lucky to have encountered the weblog and look forward to tons of more excellent minutes reading here. Thanks a lot once more for a lot of things.

  24. I would like to express my affection for your kind-heartedness giving support to visitors who really need assistance with this important theme. Your real dedication to getting the message along had become exceptionally significant and has constantly enabled workers like me to arrive at their ambitions. The invaluable guide denotes a great deal a person like me and far more to my fellow workers. With thanks; from each one of us.

  25. I enjoy you because of all of the hard work on this blog. My mum really likes making time for internet research and it’s really easy to see why. Many of us learn all concerning the lively form you provide important strategies through your blog and therefore cause participation from the others on this area then my girl is without a doubt studying so much. Take pleasure in the rest of the new year. Your conducting a fabulous job.

  26. Thanks so much for providing individuals with an exceptionally remarkable chance to read critical reviews from this site. It’s always very pleasing and packed with a great time for me personally and my office colleagues to search your site really thrice every week to read through the fresh secrets you will have. Not to mention, we’re always motivated considering the unique points served by you. Selected two areas in this posting are ultimately the most impressive I’ve had.

  27. I wish to convey my appreciation for your kindness for those who absolutely need assistance with that area of interest. Your real dedication to getting the solution along became really advantageous and has without exception encouraged many people just like me to reach their endeavors. This informative facts signifies this much a person like me and especially to my office colleagues. Thank you; from each one of us.

  28. Thank you a lot for giving everyone a very spectacular opportunity to read from this web site. It is usually so pleasurable and as well , full of a good time for me personally and my office acquaintances to search your site a minimum of 3 times every week to read through the new issues you have. Of course, I’m actually contented with the magnificent advice you serve. Some 4 facts on this page are easily the most efficient we have ever had.

  29. My wife and i have been satisfied Michael managed to carry out his studies while using the ideas he acquired through the web pages. It is now and again perplexing to just happen to be giving for free strategies which other folks may have been making money from. And we all remember we’ve got the blog owner to give thanks to because of that. The type of explanations you made, the simple website menu, the friendships your site give support to foster – it’s got mostly impressive, and it is letting our son in addition to our family believe that the content is enjoyable, which is certainly tremendously important. Many thanks for all the pieces!

  30. I have to express some appreciation to the writer for rescuing me from this difficulty. Just after surfing around throughout the world-wide-web and getting tricks which were not beneficial, I assumed my life was gone. Living without the presence of answers to the issues you’ve fixed by way of your main website is a serious case, and the kind that might have adversely damaged my entire career if I had not encountered your blog post. Your primary knowledge and kindness in dealing with all areas was helpful. I’m not sure what I would’ve done if I had not encountered such a subject like this. It’s possible to now look forward to my future. Thanks for your time so much for the impressive and effective guide. I won’t hesitate to endorse your web site to any person who needs and wants guidelines about this issue.

  31. I must express appreciation to this writer just for bailing me out of this particular difficulty. After surfing around throughout the world wide web and getting notions that were not powerful, I believed my life was done. Living without the presence of strategies to the difficulties you have solved as a result of your entire article content is a serious case, as well as those which might have badly affected my career if I had not noticed your website. Your good know-how and kindness in dealing with all things was valuable. I am not sure what I would have done if I hadn’t come upon such a thing like this. I’m able to at this moment relish my future. Thank you so much for the specialized and result oriented guide. I won’t hesitate to endorse your blog post to any individual who will need guidelines on this problem.

  32. I precisely wanted to appreciate you once again. I’m not certain the things that I would’ve created in the absence of the type of tips provided by you about my area of interest. It was actually an absolute challenging condition in my opinion, but coming across a new specialised way you dealt with the issue forced me to cry with gladness. I’m happier for your information and thus wish you find out what a powerful job that you’re undertaking instructing people with the aid of your website. Probably you’ve never encountered all of us.

  33. I must point out my admiration for your kind-heartedness in support of those who need help with the field. Your personal commitment to getting the solution all through has been wonderfully interesting and have always made individuals much like me to reach their targets. Your amazing informative help and advice denotes this much a person like me and extremely more to my office workers. Thanks a lot; from each one of us.

  34. My spouse and i were cheerful that Raymond could carry out his basic research using the ideas he discovered through your web pages. It’s not at all simplistic just to find yourself giving out tips and hints people today could have been trying to sell. And we all figure out we have got you to give thanks to for that. All of the explanations you made, the straightforward blog menu, the friendships your site help create – it’s most amazing, and it’s really helping our son and the family know that that theme is cool, which is really important. Thank you for the whole lot!

  35. I wanted to write you one tiny remark just to thank you so much again just for the precious tactics you’ve shared on this page. It was open-handed of you to offer openly just what most people would’ve offered for an e-book to help make some profit on their own, chiefly considering the fact that you could possibly have tried it if you considered necessary. These techniques additionally served like the great way to be sure that many people have the same eagerness similar to mine to understand more on the topic of this issue. I am certain there are lots of more pleasurable situations in the future for people who view your website.

  36. Thanks so much for providing individuals with such a terrific chance to read critical reviews from this website. It really is very useful and full of fun for me and my office acquaintances to visit your web site at least 3 times every week to see the newest issues you will have. And of course, I’m so at all times fulfilled with your effective secrets you give. Selected 1 ideas in this post are honestly the most suitable I’ve had.

  37. I have to express my gratitude for your kind-heartedness supporting those people who need assistance with the area of interest. Your very own dedication to passing the solution all through has been certainly invaluable and have really enabled ladies like me to realize their dreams. This warm and friendly guideline entails so much to me and somewhat more to my office colleagues. Thanks a ton; from all of us.

  38. I must show some thanks to the writer just for bailing me out of such a matter. After surfing around throughout the world-wide-web and finding solutions that were not powerful, I figured my entire life was gone. Living devoid of the solutions to the issues you’ve resolved by means of this post is a serious case, and the kind that would have adversely damaged my career if I had not discovered your web site. That competence and kindness in dealing with all areas was invaluable. I’m not sure what I would have done if I had not come upon such a step like this. I am able to at this moment look forward to my future. Thanks for your time so much for this expert and result oriented guide. I will not hesitate to suggest your web blog to any person who would need recommendations on this matter.

  39. I intended to post you the little note to finally say thank you over again for those awesome concepts you’ve discussed in this case. It was shockingly open-handed with people like you to present without restraint all most of us would have marketed for an electronic book to get some dough on their own, especially considering that you could have done it if you considered necessary. Those tricks as well worked to become a fantastic way to be sure that other people have similar keenness just as mine to learn lots more when considering this matter. Certainly there are millions of more enjoyable situations in the future for folks who read through your blog.

  40. I discovered your blog website on google and examine a few of your early blog posts. Continue to maintain the very good operate. I simply additional up your RSS feed to my MSN News Reader. Seeking ahead to finding out more from you later!?

댓글 남기기