注
これは、この記事の最新バージョンではありません。 現在のリリースについては、 この記事の .NET 10 バージョンを参照してください。
警告
このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、 .NET および .NET Core サポート ポリシーを参照してください。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
この記事では、Blazor WebAssembly を使用してをホストおよび展開する方法について説明します。
IIS は、Blazor アプリ対応の静的ファイル サーバーです。 Blazor をホストするよう IIS を構成する方法については、「IIS で静的 Web サイトを構築する」を参照してください。
発行されたアセットは、 /bin/Release/{TARGET FRAMEWORK}/publish フォルダーまたは bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish フォルダーに作成されます。このフォルダーには、 {TARGET FRAMEWORK} プレースホルダーがターゲット フレームワークです。
publish フォルダーのコンテンツを、Web サーバーまたはホスティング サービス上でホストします。
web.config ファイル
Blazor プロジェクトが発行されると、web.config ファイルが以下の IIS 構成で作成されます。
- MIME タイプ
- 次の MIME の種類に対しては、HTTP 圧縮が有効にされます。
application/octet-streamapplication/wasm
- URL Rewrite Module のルールが確立されます。
- アプリの静的なアセットが存在するサブディレクトリ (
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/wwwrootのスタンドアロンbin/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 Rewrite Module は、URL の書き換えに必要となります。 このモジュールは既定ではインストールされていません。また、Web サーバー (IIS) の役割サービス機能としてインストールすることはできません。 モジュールは、IIS Web サイトからダウンロードする必要があります。 Web Platform Installer を使用してモジュールをインストールします。
- ローカルで、URL Rewrite Module のダウンロード ページに移動します。 英語版については、WebPI を選択して WebPI インストーラーをダウンロードします。 その他の言語版については、サーバーの適切なアーキテクチャ (x86/x64) を選択して、インストーラーをダウンロードします。
- インストーラーをサーバーにコピーします。 インストーラーを実行します。 [インストール] ボタンを選択して、ライセンス条項に同意します。 インストールが完了した後、サーバーの再起動は必要はありません。
Web サイトを構成する
Web サイトの物理パスをアプリのフォルダーに設定します。 フォルダーには次のものが含まれます。
-
web.configファイル。IIS ではこのファイルを使用して、必要なリダイレクト ルールやファイルのコンテンツの種類など、Web サイトの構成が行われます。 - アプリの静的なアセット フォルダー。
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 を使用した発行済みアプリの既定の構成です。
ハンドラーの削除または継承の無効化は、アプリの基本パスの構成に加えて行われます。 IIS でサブアプリを構成するときに、アプリの index.html ファイル内のアプリのベース パスを、使用している IIS の別名に設定します。
ASP.NET Core Blazor アプリの基本パスのガイダンスに従って、アプリの基本パスを構成します。
Brotli と Gzip の圧縮
このセクションは、スタンドアロンの Blazor WebAssembly アプリにのみ適用されます。
このセクションは、スタンドアロンの Blazor WebAssembly アプリにのみ適用されます。 ホストされている Blazor アプリでは、このセクションにリンクされているファイルではなく、既定の ASP.NET Core アプリ web.config ファイルが使用されます。
web.config を使用して、スタンドアロンの Blazor 用に Brotli または Gzip で圧縮された Blazor WebAssembly アセットを提供するように IIS を構成できます。 構成ファイルの例については、web.config をご覧ください。
次のシナリオでは、サンプル web.config ファイルを追加で構成することが必要になる場合があります。
- このアプリの仕様では、次のいずれかが呼び出されます。
- 設定されていないサンプル
web.configファイルによって圧縮されたファイルを提供すること。 - 例
web.configファイルによって設定された圧縮ファイルを非圧縮形式で提供する。
- 設定されていないサンプル
- サーバーの IIS 構成 (
applicationHost.configなど) では、サーバーレベルの IIS の既定値が提供されています。 サーバーレベルの構成によっては、サンプルweb.configファイルに含まれるものとは異なる IIS 構成が必要になる場合があります。
カスタム web.config ファイルの詳細については、「カスタム web.configの使用」セクションを参照してください。
トラブルシューティング
Web サイトの構成にアクセスしようとしたときに、"500 - 内部サーバー エラー" という応答が返され、IIS マネージャーによりエラーがスローされた場合は、URL リライト モジュールがインストールされていることを確認します。 モジュールがインストールされていない場合、IIS では web.config ファイルを解析できません。 これは、IIS マネージャーによる Web サイトの構成の読み込み、そして Web サイトによる Blazor の静的ファイルの提供を阻止するためのものです。
IIS への展開のトラブルシューティングについて詳しくは、「Azure App Service および IIS での ASP.NET Core のトラブルシューティング」を参照してください。
ASP.NET Core