次の方法で共有


ASP.NET Core Blazor のホストと展開

注意

これは、この記事の最新バージョンではありません。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。

警告

このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、 .NET および .NET Core サポート ポリシーを参照してください。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。

重要

この情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft はここに示されている情報について、明示か黙示かを問わず、一切保証しません。

現在のリリースについては、この記事の .NET 9 バージョンを参照してください。

この記事では、Blazor アプリをホストおよび展開する方法について説明します。

アプリの発行

アプリは、リリース構成での展開のために発行されます。

注意

Blazor WebAssembly プロジェクトからホステッド Serverを発行します。

  1. [ビルド] メニューから 「{APPLICATION} を発行する] コマンドを選択します。{APPLICATION} プレースホルダーはアプリの名前です。
  2. [publish target]\(発行先\) を選択します。 ローカルに発行するには、[フォルダー] を選択します。
  3. [フォルダーの選択] フィールド内で既定の場所を受け入れるか、または別の場所を指定します。 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 アプリをホストするには、次のリソースを参照してください。

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();