次の方法で共有


IIS を使用 ASP.NET Core Blazor WebAssembly をホストしてデプロイする

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

警告

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

重要

この情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft は、ここで提供される情報に関して明示的または黙示的な保証を行いません。

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

この記事では、インターネット インフォメーション サービス (IIS) を使用してBlazor WebAssemblyをホストおよび展開する方法について説明します。

IIS は、Blazor アプリ対応の静的ファイル サーバーです。 Blazor をホストするよう IIS を構成する方法については、「IIS で静的 Web サイトを構築する」を参照してください。

発行されたアセットは、使用されている SDK のバージョンと、/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-stream
    • application/wasm
  • URL Rewrite Module のルールが確立されます。
    • アプリの静的なアセットが存在するサブディレクトリ (wwwroot/{PATH REQUESTED}) が提供されます。
    • ファイル以外のアセットの要求が、アプリの静的アセット フォルダー内の既定のドキュメント (wwwroot/index.html) にリダイレクトされるように、SPA フォールバック ルーティングが作成されます。

カスタムweb.configの使用

カスタム web.config ファイルを使用するには、次のようにします。

  1. カスタム web.config ファイルをプロジェクトのルート フォルダーに配置します。
  2. プロジェクトを発行します。 詳しくは、「ASP.NET Core Blazor のホストと展開」をご覧ください。
  1. カスタム web.config ファイルをプロジェクトのルート フォルダーに配置します。 ホストされている Blazor WebAssemblyソリューションの場合は、ファイルを Server プロジェクトのフォルダーに配置します。
  2. プロジェクトを発行します。 ホストされている Blazor WebAssembly ソリューションの場合は、Server プロジェクトからソリューションを発行します。 詳しくは、「ASP.NET Core Blazor のホストと展開」をご覧ください。

発行中の SDK の web.config の生成または変換が、publish フォルダー内の発行済みアセットにファイルを移動しない場合、またはカスタム web.config ファイル内のカスタム構成を変更する場合は、必要に応じて次のいずれかの方法を使用してプロセスを完全に制御します。

  • たとえば、SDK がファイルを生成しない場合は、使用されている 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 を使用してモジュールをインストールします。

  1. ローカルで、URL Rewrite Module のダウンロード ページに移動します。 英語版については、WebPI を選択して WebPI インストーラーをダウンロードします。 その他の言語版については、サーバーの適切なアーキテクチャ (x86/x64) を選択して、インストーラーをダウンロードします。
  2. インストーラーをサーバーにコピーします。 インストーラーを実行します。 [インストール] ボタンを選択して、ライセンス条項に同意します。 インストールが完了した後、サーバーの再起動は必要はありません。

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 のトラブルシューティング」を参照してください。