共用方式為


使用 IIS 載入與部署 ASP.NET Core Blazor WebAssembly

備註

這不是本文的最新版本。 如需目前的版本,請參閱 本文的 .NET 9 版本。

警告

不再支援此版本的 ASP.NET Core。 如需詳細資訊,請參閱 .NET 和 .NET Core 支持原則。 如需目前的版本,請參閱 本文的 .NET 9 版本。

這很重要

這項資訊與發行前版本產品有關,在正式發行前可能會大幅修改。 Microsoft 對於此處提供的資訊,不做任何明確或隱含的保證。

如需目前的版本,請參閱 本文的 .NET 9 版本。

本文說明如何使用 Internet Information Services (IIS) 來裝載和部署Blazor WebAssembly。

IIS 是足以支援 Blazor 應用程式的靜態檔案伺服器。 若要設定 IIS 來裝載 Blazor,請參閱在 IIS 上建置靜態網站

根據所使用的 SDK 版本,已發佈的資產會建立在 /bin/Release/{TARGET FRAMEWORK}/publishbin\Release\{TARGET FRAMEWORK}\browser-wasm\publish 資料夾中,而 {TARGET FRAMEWORK} 預留位置指定目標框架。 在網頁伺服器或裝載服務上,裝載 publish 資料夾的內容。

web.config 檔案

在發行 Blazor 專案時,系統會使用下列 IIS 組態建立 web.config 檔案:

  • MIME 類型
  • 針對下列 MIME 類型會啟用 HTTP 壓縮:
    • application/octet-stream
    • application/wasm
  • 已建立 URL Rewrite Module 規則:
    • 提供應用程式靜態資產所在的子目錄 (wwwroot/{PATH REQUESTED})。
    • 建立 SPA 後援路由,讓非檔案資產要求重新導向至其靜態資產資料夾中的應用程式預設文件 (wwwroot/index.html)。

使用自定義 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 版本產生檔案,並且< c3/> 預留位置是目標框架,而應用程式位於獨立的 、或,請在專案檔中將屬性設定為。 對獨立 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 Rewrite 模組

需要 URL Rewrite Module,才可重寫 URL。 預設不會安裝此模組,且其無法用來安裝為網頁伺服器 (IIS) 角色服務功能。 必須從 IIS 網站下載模組。 請使用 Web Platform Installer 安裝模組:

  1. 在本機上,瀏覽到 URL Rewrite Module 下載頁面。 如需英文版,請選取 [WebPI] 下載 WebPI 安裝程式。 如需其他語言,請選取適當的伺服器架構 (x86 x64) 來下載安裝程式。
  2. 將安裝程式複製到伺服器。 執行安裝程式。 選取 [安裝] 按鈕,並接受授權條款。 安裝完成之後,不需要重新啟動伺服器。

設定網站

將網站的 [實體路徑] 設為應用程式的資料夾。 資料夾包含:

  • IIS 用來設定網站的 web.config 檔案,包括必要的重新導向規則和檔案內容類型。
  • 應用程式的靜態資產資料夾。

託管為 IIS 子應用程式

如果將獨立應用程式裝載為 IIS 子應用程式,請執行下列任一動作:

  • 停用繼承的 ASP.NET Core 模組處理元。

    要移除 Blazor 應用程式的已發行 web.config 檔案中的處理常式,可在該檔案的 <system.webServer> 區段中新增一個 <handlers> 區段:

    <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 發行應用程式時的預設設定。

除了設定應用程式的基底路徑外,也會移除處理常式或停用繼承。 在應用程式的 index.html 檔案,將應用程式基底路徑設為在 IIS 中設定子應用程式時使用的 IIS 別名。

遵循 ASP.NET Core Blazor 應用程式基底路徑中的指引,設定應用程式的基底路徑。

Brotli 和 Gzip 壓縮

本節僅適用於獨立的 Blazor WebAssembly 應用程式。

本節僅適用於獨立的 Blazor WebAssembly 應用程式。 裝載的 Blazor 應用程式會使用預設 ASP.NET Core 應用程式 web.config 檔案,而不是本節所連結的檔案。

您可以透過 web.config 設定 IIS,以便為獨立的 Blazor 應用程式提供以 Brotli 或 Gzip 壓縮的 Blazor WebAssembly 資產。 如需範例組態檔,請參閱 web.config

下列案例可能需要為範例 web.config 檔案進行其他組態設定:

  • 應用程式的規格要求以下任一項:
    • 提供未由範例 web.config 檔案設定的壓縮檔案。
    • 以未壓縮格式提供範例 web.config 檔案所設定的壓縮檔案。
  • 伺服器的 IIS 組態 (例如,applicationHost.config) 會提供伺服器層級的 IIS 預設值。 視伺服器層級的組態而定,應用程式所需要的 IIS 組態可能與範例 web.config 檔案所包含的 IIS 組態不同。

如需自訂web.config檔案的詳細資訊,請參閱使用自訂web.config部分

故障排除

如果收到「500 - 內部伺服器錯誤」,且 IIS 管理員在嘗試存取網站設定時擲回錯誤,請確認是否已安裝 URL Rewrite 模組。 未安裝此模組時,IIS 無法剖析 web.config 檔案。 這導致 IIS 管理員無法載入網站的組態,且網站無法提供 Blazor 的靜態檔案。

如需針對 IIS 部署進行疑難排解的詳細資訊,請參閱針對 Azure App Service 和 IIS 上的 ASP.NET Core 進行疑難排解