注意
これは、この記事の最新バージョンではありません。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
警告
このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、 .NET および .NET Core サポート ポリシーを参照してください。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
重要
この情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft はここに示されている情報について、明示か黙示かを問わず、一切保証しません。
現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
この記事では、Blazor アプリをホストおよび展開する方法について説明します。
アプリの発行
アプリは、リリース構成での展開のために発行されます。
-
[ビルド] メニューから 「{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 アプリは、クライアント アプリの静的 Web アセットと共に、サーバー アプリの
/bin/Release/{TARGET FRAMEWORK}/publish
フォルダーに発行されます。publish
フォルダーの内容をホストに展開します。
- スタンドアロン: アプリは、
IIS
IIS で Blazor アプリをホストするには、次のリソースを参照してください。
- IIS のホスティング
- ASP.NET Core サーバー側アプリケーションをホストしてデプロイします。IIS で実行される Blazor Web App アプリ (.NET 8 以降) と Blazor Server アプリ (.NET 7 以前)、Azure Virtual Machines (VM) で稼働する Windows OS と Azure App Service を含む IIS を含む。
- IIS を使用して ASP.NET Core Blazor WebAssemblyをホストおよび展開する: スタンドアロン Blazor WebAssembly アプリ (すべての .NET リリース) とホストされているBlazor WebAssembly アプリ (.NET 7 以前)。
- IIS サブアプリケーションのホスト
- アプリを発行する前に、 アプリの基本パスのガイダンス に従ってください。 この例では、アプリのベース パス
/CoolApp
を使い、アプリ設定または他の構成プロバイダーからベース パスを取得する方法を示します。 - 「高度な構成」にあるサブアプリケーションの構成に関するガイダンスに従ってください。 ルート サイトの下にあるサブアプリのフォルダー パスがサブアプリの仮想パスになります。
/CoolApp
のアプリ ベース パスの場合、Blazor アプリはルート サイトの下のCoolApp
という名前のフォルダーに配置され、サブアプリは/CoolApp
の仮想パスを使用します。
- アプリを発行する前に、 アプリの基本パスのガイダンス に従ってください。 この例では、アプリのベース パス
Blazor アプリを含め、ASP.NET Core アプリ間のアプリ プールの共有はサポートされていません。 IIS でホストする場合は、アプリごとに 1 つのアプリ プールを使い、複数のアプリをホストするために IIS の仮想ディレクトリを使用しないようにしてください。
"Blazor WebAssembly" のアプリ プールに対して、ASP.NET Core アプリによってホストされる 1 つ以上の Blazor WebAssembly アプリ (ホステッド ソリューションと呼ばれます) がサポートされます。 ただし、1 つのアプリ プールを複数のホステッド 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