다음을 통해 공유


IIS를 사용하여 ASP.NET Core Blazor WebAssembly 호스트 및 배포

비고

이 기사는 최신 버전이 아닙니다. 현재 릴리스는 이 문서의 .NET 10 버전을 참조하세요.

경고

이 버전의 ASP.NET Core는 더 이상 지원되지 않습니다. 자세한 내용은 .NET 및 .NET Core 지원 정책을 참조하세요. 현재 릴리스에 대해서는 본 기사의 .NET 9 버전을 참조하십시오.

이 문서에서는 Blazor WebAssembly를 사용하여 호스트 및 배포 하는 방법을 설명합니다.

IIS는 앱에 사용할 수 있는 정적 파일 서버입니다 Blazor . IIS를 호스트 Blazor하도록 구성하려면 IIS에서 정적 웹 사이트 빌드를 참조하세요.

게시된 자산은 /bin/Release/{TARGET FRAMEWORK}/publish 또는 bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish 폴더에 생성되며, 여기서 {TARGET FRAMEWORK} 는 대상 프레임워크를 나타내는 자리 표시자입니다. 웹 서버 또는 호스팅 서비스에서 폴더의 publish 콘텐츠를 호스트합니다.

web.config 파일

Blazor 프로젝트가 web.config 게시되면, 다음 IIS 구성을 통해 파일이 생성됩니다.

  • MIME 형식
  • HTTP 압축은 다음 MIME 형식에 대해 사용하도록 설정됩니다.
    • application/octet-stream
    • application/wasm
  • URL 다시 쓰기 모듈 규칙이 설정됩니다.
    • 앱의 정적 자산이 있는 하위 디렉터리(wwwroot/{PATH REQUESTED})를 제공합니다.
    • 비 파일 자산에 대한 요청이 정적 자산 폴더(wwwroot/index.html)에서 앱의 기본 문서로 리디렉션되도록 SPA 대체 라우팅을 만듭니다.

사용자 지정 web.config 사용

사용자 지정 web.config 파일을 사용하려면 다음 단계를 진행하세요.

  1. 프로젝트의 루트 폴더에 사용자 지정 web.config 파일을 배치합니다.
  2. 프로젝트를 게시합니다. 자세한 내용은 ASP.NET Core Blazor 호스트 및 배포를 참조하세요.
  1. 프로젝트의 루트 폴더에 사용자 지정 web.config 파일을 배치합니다. 호스트 Blazor WebAssembly 된 솔루션의 경우 파일을 프로젝트의 폴더에 Server 배치합니다.
  2. 프로젝트를 게시합니다. 호스팅된 Blazor WebAssembly 솔루션의 경우 Server 프로젝트에서 솔루션을 게시합니다. 자세한 내용은 ASP.NET Core Blazor 호스트 및 배포를 참조하세요.

게시 중에 SDK의 web.config 생성 또는 변환이 파일을 폴더의 게시된 자산 publish 으로 이동하지 않거나 사용자 지정 web.config 파일의 사용자 지정 구성을 수정하는 경우 필요에 따라 다음 방법 중 하나를 사용하여 프로세스를 완전히 제어합니다.

  • SDK에서 파일을 생성하지 않는 경우(예: 자리 표시자가 대상 프레임워크인 독립 실행형 Blazor WebAssembly 앱 /bin/Release/{TARGET FRAMEWORK}/publish/wwwrootbin/Release/{TARGET FRAMEWORK}/browser-wasm/publish에서) 프로젝트 파일({TARGET FRAMEWORK})에서 속성을 <PublishIISAssets> 설정합니다true..csproj 일반적으로 독립 실행형 WebAssembly 앱의 경우 사용자 지정 web.config 파일을 이동하고 SDK에서 파일의 변환을 방지하는 데 필요한 유일한 설정입니다.

    <PropertyGroup>
      <PublishIISAssets>true</PublishIISAssets>
    </PropertyGroup>
    
  • 프로젝트 파일web.config()에서 SDK의 .csproj 변환을 사용하지 않도록 설정합니다.

    <PropertyGroup>
      <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
    </PropertyGroup>
    
  • 프로젝트 파일(.csproj)에 사용자 지정 대상을 추가하여 사용자 지정 web.config 파일을 이동합니다. 다음 예제에서 사용자 지정 web.config 파일은 개발자가 프로젝트의 루트에 배치합니다. web.config 파일이 다른 곳에 있는 경우 파일 경로를 SourceFiles지정합니다. 다음 예제에서는 폴더publish$(PublishDir) 지정하지만 사용자 지정 출력 위치에 대한 경로를 DestinationFolder 제공합니다.

    <Target Name="CopyWebConfig" AfterTargets="Publish">
      <Copy SourceFiles="web.config" DestinationFolder="$(PublishDir)" />
    </Target>
    

URL 다시 쓰기 모듈 설치

URL을 다시 작성하려면 URL 다시 쓰기 모듈이 필요합니다. 모듈은 기본적으로 설치되지 않으며 IIS(웹 서버) 역할 서비스 기능으로 설치할 수 없습니다. 모듈은 IIS 웹 사이트에서 다운로드해야 합니다. 웹 플랫폼 설치 관리자를 사용하여 모듈을 설치합니다.

  1. 로컬에서 URL 다시 쓰기 모듈 다운로드 페이지로 이동합니다. 영어 버전의 경우 WebPI 를 선택하여 WebPI 설치 관리자를 다운로드합니다. 다른 언어의 경우 서버(x86/x64)에 적합한 아키텍처를 선택하여 설치 관리자를 다운로드합니다.
  2. 서버에 설치 파일을 복사합니다. 설치 관리자를 실행합니다. 설치 단추를 선택하고 사용 조건에 동의합니다. 설치가 완료된 후에는 서버를 다시 시작할 필요가 없습니다.

웹 사이트 구성

웹 사이트의 실제 경로를 앱 폴더로 설정합니다. 폴더에는 다음이 포함됩니다.

  • web.config 필요한 리디렉션 규칙 및 파일 콘텐츠 형식을 포함하여 IIS에서 웹 사이트를 구성하는 데 사용하는 파일입니다.
  • 앱의 정적 자산 폴더입니다.

IIS 하위 앱으로 호스트

독립 실행형 앱이 IIS 하위 앱으로 호스트되는 경우 다음 중 하나를 수행합니다.

  • 상속된 ASP.NET Core 모듈 처리기를 사용하지 않도록 설정합니다.

    Blazor 파일의 web.config 섹션에 <handlers> 섹션을 추가하여 <system.webServer> 앱의 게시된 파일에서 처리기를 제거합니다.

    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    
  • <system.webServer> 요소의 <location>을(를) inheritInChildApplications로 설정하여 루트(부모) 앱의 false 섹션에서 상속을 비활성화합니다.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <handlers>
            <add name="aspNetCore" ... />
          </handlers>
          <aspNetCore ... />
        </system.webServer>
      </location>
    </configuration>
    

    비고

    루트(부모) 앱 섹션의 <system.webServer> 상속을 사용하지 않도록 설정하는 것은 .NET SDK를 사용하여 게시된 앱에 대한 기본 구성입니다.

처리기를 제거하거나 상속을 사용하지 않도록 설정하는 것은 앱의 기본 경로를 구성하는 것 외에도 수행됩니다. 앱 파일의 index.html 앱 기본 경로를 IIS에서 하위 앱을 구성할 때 사용되는 IIS 별칭으로 설정합니다.

ASP.NET Core Blazor 앱 기본 경로의 지침에 따라 앱의 기본 경로를 구성합니다.

Brotli 및 Gzip 압축

이 섹션은 독립 실행형 Blazor WebAssembly 앱에만 적용됩니다.

이 섹션은 독립 실행형 Blazor WebAssembly 앱에만 적용됩니다. 호스트된 Blazor 앱은 이 섹션에 연결된 파일이 아니라 기본 ASP.NET Core 앱 web.config 파일을 사용합니다.

IIS를 web.config을 통해 구성하여 독립 실행형 Blazor 앱에 Brotli 또는 Gzip 압축 Blazor WebAssembly 자산을 제공할 수 있습니다. 예제 구성 파일은 다음을 참조하세요 web.config.

다음 시나리오에서는 예제 web.config 파일의 추가 구성이 필요할 수 있습니다.

  • 앱의 사양은 다음 중 하나를 요구합니다.
    • 예제 web.config 파일로 구성되지 않은 압축 파일 제공
    • 예제 web.config 파일에서 구성한 압축 파일을 압축되지 않은 형식으로 제공합니다.
  • 서버의 IIS 구성(예: applicationHost.config)은 서버 수준 IIS 기본값을 제공합니다. 서버 수준 구성에 따라 앱에는 예제 web.config 파일에 포함된 것과 다른 IIS 구성이 필요할 수 있습니다.

사용자 지정 파일에 대한 자세한 내용은 web.configweb.config 섹션의 사용을 참조하세요.

Troubleshooting

500 - 내부 서버 오류가 수신되고, IIS 관리자가 웹 사이트의 구성에 액세스를 시도할 때 오류가 발생하는 경우, URL 재작성 모듈이 설치되어 있는지 확인합니다. 모듈이 설치되어 있지 않으면 IIS에서 web.config 파일을 구문 분석할 수 없습니다. IIS 관리자가 웹 사이트의 구성을 로드하지 못하게 하고, 웹 사이트가 Blazor에 해당하는 정적 파일을 제공하지 못하게 합니다.

IIS에 대한 배포 문제 해결에 대한 자세한 내용은 Azure App Service 및 IIS에서 ASP.NET Core 문제 해결을 참조하세요.