참고
이 문서의 최신 버전은 아닙니다. 현재 릴리스는 이 문서의 .NET 9 버전을 참조 하세요.
중요
이 정보는 상업적으로 출시되기 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적, 또는 묵시적인 보증을 하지 않습니다.
현재 릴리스는 이 문서의 .NET 9 버전을 참조 하세요.
이 문서에서는 Blazor 앱을 호스트하고 배포하는 방법을 설명합니다.
앱 게시
앱은 릴리스 구성으로 배포하기 위해 게시됩니다.
참고
Blazor WebAssembly 프로젝트에서 호스팅된 솔루션을 게시합니다.
-
빌드 메뉴에서 게시 {APPLICATION} 명령을 선택합니다. 여기서
{APPLICATION}
자리 표시자는 앱의 이름입니다. - publish target을 선택합니다. 로컬로 게시하려면 폴더를 선택합니다.
-
폴더 선택 필드에서 기본 위치를 그대로 사용하거나 다른 위치를 지정합니다.
Publish
단추를 선택합니다.
앱을 게시하면 배포할 자산을 만들기 전에 프로젝트 종속성의 복원과 프로젝트의 빌드가 트리거됩니다. 빌드 프로세스의 일부로 앱 다운로드 크기와 로드 시간을 줄이기 위해 사용하지 않는 메서드와 어셈블리를 제거합니다.
기본 게시 위치
-
Blazor Web App: 앱이
/bin/Release/{TARGET FRAMEWORK}/publish
폴더에 게시됩니다. 여기서{TARGET FRAMEWORK}
자리 표시자는 대상 프레임워크입니다. 호스트에publish
폴더의 콘텐츠를 배포합니다. - 독립 실행형 Blazor WebAssembly: 앱이
bin/Release/{TARGET FRAMEWORK}/publish
또는bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish
폴더에 배포됩니다. 앱을 정적 사이트로 배포하려면wwwroot
폴더의 내용을 정적 사이트 호스트에 복사합니다.
-
Blazor Server: 앱이
/bin/Release/{TARGET FRAMEWORK}/publish
폴더에 게시됩니다. 여기서{TARGET FRAMEWORK}
자리 표시자는 대상 프레임워크입니다. 호스트에publish
폴더의 콘텐츠를 배포합니다. - Blazor WebAssembly
- 독립 실행형: 앱이
/bin/Release/{TARGET FRAMEWORK}/publish
또는bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish
폴더에 게시됩니다. 앱을 정적 사이트로 배포하려면wwwroot
폴더의 내용을 정적 사이트 호스트에 복사합니다. - 호스트됨: 서버 ASP.NET Core 앱 및 클라이언트 Blazor WebAssembly 앱은 클라이언트 앱의 정적 웹 자산과 함께 서버 앱의 폴더에 게시
/bin/Release/{TARGET FRAMEWORK}/publish
됩니다. 호스트에publish
폴더의 콘텐츠를 배포합니다.
- 독립 실행형: 앱이
IIS
IIS에서 Blazor 앱을 호스트하려면 다음 리소스를 참조하세요.
- IIS 호스팅
- Windows OS 및 Azure App Service를 실행하는 ASP.NET Azure VM(Virtual Machines)이 있는 IIS를 포함하여 IIS에서 실행되는 core 서버 쪽 BlazorBlazor Web App앱(.NET 8 이상) 및 Blazor Server 앱(.NET 7 이하)을 호스트하고 배포합니다.
- IIS: 독립 실행형 Blazor WebAssembly 앱(모든 .NET 릴리스) 및 호스트된 앱(.NET 7 이하)을 사용하여 Blazor WebAssembly하고 배포합니다.
- IIS 하위 애플리케이션 호스팅
- 앱을 게시하기 전에 앱 기본 경로 지침을 따릅니다. 예제에서는 앱 기본 경로를
/CoolApp
사용하고 앱 설정 또는 다른 구성 공급자에서 기본 경로를 가져오는 방법을 보여 줍니다. -
고급 구성의 하위 애플리케이션 구성 지침을 따릅니다. 루트 사이트 아래에 있는 하위 앱의 폴더 경로는 하위 앱의 가상 경로가 됩니다.
/CoolApp
의 앱 기본 경로의 경우, Blazor 앱은 루트 사이트 아래에 있는CoolApp
이라는 폴더에 배치되고 하위 앱은/CoolApp
의 가상 경로를 사용합니다.
- 앱을 게시하기 전에 앱 기본 경로 지침을 따릅니다. 예제에서는 앱 기본 경로를
Blazor 앱을 포함하여 ASP.NET Core 앱 간에 앱 풀을 공유하는 것은 지원되지 않습니다. IIS를 사용하여 호스트할 때 앱당 하나의 앱 풀을 사용하고 여러 앱을 호스트하기 위해 IIS의 가상 디렉터리를 사용하지 않도록 합니다.
ASP.NET Core 앱에 의해 호스팅된 하나 이상의 Blazor WebAssembly 앱은 호스팅된 Blazor WebAssembly 솔루션으로서 하나의 앱 풀을 지원합니다. 그러나 호스트된 여러 Blazor WebAssembly 솔루션이나 하위 앱 호스팅 시나리오에 단일 앱 풀을 할당하는 것을 권장하거나 지원하지 않습니다.
솔루션에 대한 자세한 내용은 ASP.NET Core Blazor용 도구를 참조하세요.
Blazor Server
MapFallbackToPage
구성
이 섹션은 Blazor Server 앱에만 적용됩니다. MapFallbackToPage는 Blazor Web App 및 Blazor WebAssembly 앱에서는 지원되지 않습니다.
앱에 사용자 지정 리소스와 Razor 구성 요소가 포함된 별도의 영역이 필요한 시나리오의 경우:
앱의
Pages
폴더 내에 리소스를 보관할 폴더를 만듭니다. 예를 들어 앱의 관리자 섹션이Admin
(Pages/Admin
)이라는 새 폴더에 만들어집니다.영역의 루트 페이지(
_Host.cshtml
)를 만듭니다. 예를 들어 앱의 주 루트 페이지(Pages/Admin/_Host.cshtml
)에서Pages/_Host.cshtml
파일을 만듭니다. Admin@page
페이지에_Host
지시문을 제공하지 마세요.영역 폴더에 레이아웃을 추가합니다(예:
Pages/Admin/_Layout.razor
). 별도 영역의 레이아웃에서 영역의 폴더와 일치하도록<base>
태그href
를 설정합니다(예:<base href="/Admin/" />
). 데모용으로 페이지의 정적 리소스에~/
를 추가합니다. 예시:~/css/bootstrap/bootstrap.min.css
~/css/site.css
-
~/BlazorSample.styles.css
(예제 앱의 네임스페이스는BlazorSample
임) -
~/_framework/blazor.server.js
(Blazor 스크립트)
영역에 고유한 정적 자산 폴더가 있어야 하는 경우 폴더를 추가하고
Program.cs
의 정적 파일 미들웨어로 위치를 지정합니다(예:app.UseStaticFiles("/Admin/wwwroot")
).Razor 구성 요소가 영역의 폴더에 추가됩니다. 최소한, 영역에 대한 올바른
Index
지시문을 사용하여@page
구성 요소를 영역 폴더에 추가합니다. 예를 들어 앱의 기본Pages/Admin/Index.razor
파일을 기반으로Pages/Index.razor
파일을 추가합니다. 파일 맨 위에 경로 템플릿으로 Admin 영역을 나타냅니다(@page "/admin"
). 필요에 따라 추가 구성 요소를 추가합니다. 예를 들어Pages/Admin/Component1.razor
지시문과@page
,@page "/admin/component1
경로 템플릿을 사용하는 경우.Program.cs
에서 영역의 요청 경로에 대해 MapFallbackToPage를 호출하고, 이는_Host
페이지의 대체 루트 페이지 경로 바로 앞에 위치합니다.... app.UseRouting(); app.MapBlazorHub(); app.MapFallbackToPage("~/Admin/{*clientroutes:nonfile}", "/Admin/_Host"); app.MapFallbackToPage("/_Host"); app.Run();
ASP.NET Core