비고
이 기사는 최신 버전이 아닙니다. 현재 릴리스는 이 문서의 .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-streamapplication/wasm
- URL 다시 쓰기 모듈 규칙이 설정됩니다.
- 앱의 정적 자산이 있는 하위 디렉터리(
wwwroot/{PATH REQUESTED})를 제공합니다. - 비 파일 자산에 대한 요청이 정적 자산 폴더(
wwwroot/index.html)에서 앱의 기본 문서로 리디렉션되도록 SPA 대체 라우팅을 만듭니다.
- 앱의 정적 자산이 있는 하위 디렉터리(
사용자 지정 web.config 사용
사용자 지정 web.config 파일을 사용하려면 다음 단계를 진행하세요.
- 프로젝트의 루트 폴더에 사용자 지정
web.config파일을 배치합니다. - 프로젝트를 게시합니다. 자세한 내용은 ASP.NET Core Blazor 호스트 및 배포를 참조하세요.
- 프로젝트의 루트 폴더에 사용자 지정
web.config파일을 배치합니다. 호스트 Blazor WebAssembly 된 솔루션의 경우 파일을 프로젝트의 폴더에 Server 배치합니다. - 프로젝트를 게시합니다. 호스팅된 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 웹 사이트에서 다운로드해야 합니다. 웹 플랫폼 설치 관리자를 사용하여 모듈을 설치합니다.
- 로컬에서 URL 다시 쓰기 모듈 다운로드 페이지로 이동합니다. 영어 버전의 경우 WebPI 를 선택하여 WebPI 설치 관리자를 다운로드합니다. 다른 언어의 경우 서버(x86/x64)에 적합한 아키텍처를 선택하여 설치 관리자를 다운로드합니다.
- 서버에 설치 파일을 복사합니다. 설치 관리자를 실행합니다. 설치 단추를 선택하고 사용 조건에 동의합니다. 설치가 완료된 후에는 서버를 다시 시작할 필요가 없습니다.
웹 사이트 구성
웹 사이트의 실제 경로를 앱 폴더로 설정합니다. 폴더에는 다음이 포함됩니다.
-
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 문제 해결을 참조하세요.
ASP.NET Core