Teilen über


Hosten und Bereitstellen von ASP.NET Core Blazor WebAssembly mit IIS

Hinweis

Dies ist nicht die neueste Version dieses Artikels. Die aktuelle Version finden Sie in der .NET 10-Version dieses Artikels.

Warnung

Diese Version von ASP.NET Core wird nicht mehr unterstützt. Weitere Informationen finden Sie in der .NET- und .NET Core-Supportrichtlinie. Informationen zum aktuellen Release finden Sie in der .NET 9-Version dieses Artikels.

In diesem Artikel wird erläutert, wie Blazor WebAssembly mithilfe von Internet Information Services (IIS) gehostet und bereitgestellt wird.

IIS ist ein fähiger statischer Dateiserver für Blazor Apps. Informationen zum Konfigurieren von IIS zum Hosten Blazorfinden Sie unter Erstellen einer statischen Website in IIS.

Veröffentlichte Objekte werden im /bin/Release/{TARGET FRAMEWORK}/publish Oder bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish Ordner erstellt, wobei der {TARGET FRAMEWORK} Platzhalter das Zielframework ist. Hosten Sie den Inhalt des publish Ordners auf dem Webserver oder Hostingdienst.

web.config-Datei

Wenn ein Blazor Projekt veröffentlicht wird, wird eine web.config Datei mit der folgenden IIS-Konfiguration erstellt:

  • MIME-Typen
  • DIE HTTP-Komprimierung ist für die folgenden MIME-Typen aktiviert:
    • application/octet-stream
    • application/wasm
  • URL Rewrite Module-Regeln werden eingerichtet:
    • Stellen Sie das Unterverzeichnis bereit, in dem sich die statischen Ressourcen der App befinden (wwwroot/{PATH REQUESTED}).
    • Erstellen Sie das SPA-Fallback-Routing, sodass Anforderungen für nicht-dateibasierte Assets an das Standarddokument der App im statischen Ressourcenordner (wwwroot/index.html) umgeleitet werden.

Verwendung einer benutzerdefinierten web.config

So verwenden Sie eine benutzerdefinierte web.config Datei:

  1. Platzieren Sie die benutzerdefinierte web.config Datei im Stammordner des Projekts.
  2. Veröffentlichen Sie das Projekt. Weitere Informationen finden Sie unter ASP.NET Core hosten und bereitstellenBlazor.
  1. Platzieren Sie die benutzerdefinierte web.config Datei im Stammordner des Projekts. Platzieren Sie die Datei für eine gehostete Blazor WebAssemblyLösung im Ordner des Server Projekts.
  2. Veröffentlichen Sie das Projekt. Veröffentlichen Sie für eine gehostete Blazor WebAssembly-Lösung die Lösung aus dem Server-Projekt. Weitere Informationen finden Sie unter ASP.NET Core hosten und bereitstellenBlazor.

Wenn die Generierung oder Transformation des web.config SDK während der Veröffentlichung entweder die Datei nicht in die veröffentlichten Assets im publish Ordner verschiebt oder die benutzerdefinierte Konfiguration in Ihrer benutzerdefinierten web.config Datei geändert wird, verwenden Sie bei Bedarf einen der folgenden Ansätze, um den Prozess vollständig zu kontrollieren:

  • Wenn das SDK die Datei nicht generiert, z. B. in einer eigenständigen Blazor WebAssembly App bei /bin/Release/{TARGET FRAMEWORK}/publish/wwwroot oder bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish, wobei der {TARGET FRAMEWORK} Platzhalter das Zielframework ist, legen Sie die <PublishIISAssets> Eigenschaft true in der Projektdatei (.csproj) fest. In der Regel für eigenständige WebAssembly-Apps ist dies die einzige erforderliche Einstellung, um eine benutzerdefinierte web.config Datei zu verschieben und die Transformation der Datei durch das SDK zu verhindern.

    <PropertyGroup>
      <PublishIISAssets>true</PublishIISAssets>
    </PropertyGroup>
    
  • Deaktivieren Sie die SDK-Transformation web.config in der Projektdatei (.csproj):

    <PropertyGroup>
      <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
    </PropertyGroup>
    
  • Fügen Sie der Projektdatei (.csproj) ein benutzerdefiniertes Ziel hinzu, um eine benutzerdefinierte web.config Datei zu verschieben. Im folgenden Beispiel wird die benutzerdefinierte web.config Datei vom Entwickler im Stammverzeichnis des Projekts platziert. Wenn sich die web.config Datei an anderer Stelle befindet, geben Sie den Pfad zur Datei in SourceFiles. Im folgenden Beispiel wird der publish-Ordner mit $(PublishDir) angegeben, aber es wird ein Pfad zu DestinationFolder für einen benutzerdefinierten Ausgabespeicherort bereitgestellt.

    <Target Name="CopyWebConfig" AfterTargets="Publish">
      <Copy SourceFiles="web.config" DestinationFolder="$(PublishDir)" />
    </Target>
    

Installieren des URL-Neuschreibmoduls

Das URL Rewrite Module ist erforderlich, um URLs neu zu schreiben. Das Modul ist standardmäßig nicht installiert, und es ist nicht für die Installation als Iis-Rollendienstfunktion (Web Server) verfügbar. Das Modul muss von der IIS-Website heruntergeladen werden. Verwenden Sie den Webplattform-Installer, um das Modul zu installieren:

  1. Navigieren Sie lokal zur Seite "URL Rewrite Module downloads". Wählen Sie für die englische Version WebPI aus, um das WebPI-Installationsprogramm herunterzuladen. Wählen Sie für andere Sprachen die entsprechende Architektur für den Server (x86/x64) aus, um das Installationsprogramm herunterzuladen.
  2. Kopieren Sie das Installationsprogramm auf den Server. Führen Sie das Installationsprogramm aus. Wählen Sie die Schaltfläche " Installieren " aus, und akzeptieren Sie die Lizenzbedingungen. Nach Abschluss der Installation ist kein Serverneustart erforderlich.

Konfigurieren der Website

Legen Sie den physischen Pfad der Website auf den Ordner der App fest. Der Ordner enthält:

  • Die web.config Datei, die IIS zum Konfigurieren der Website verwendet, einschließlich der erforderlichen Umleitungsregeln und Dateiinhaltstypen.
  • Der statische Ressourcenordner der App.

Host als IIS-Unter-App

Wenn eine eigenständige App als IIS-Unter-App gehostet wird, führen Sie eine der folgenden Aktionen aus:

  • Deaktivieren Sie den geerbten ASP.NET Core Module-Handler.

    Entfernen Sie den Handler in der veröffentlichten Datei der Blazor-App, indem Sie dem web.config-Abschnitt der Datei einen <handlers>-Abschnitt zum <system.webServer>-Abschnitt hinzufügen.

    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    
  • Deaktivieren Sie die Vererbung des Abschnitts <system.webServer> der Stamm-App (übergeordnete App) mithilfe eines <location> Elements, das inheritInChildApplications auf Folgendes false festgelegt ist:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <handlers>
            <add name="aspNetCore" ... />
          </handlers>
          <aspNetCore ... />
        </system.webServer>
      </location>
    </configuration>
    

    Hinweis

    Das Deaktivieren der Vererbung des Abschnitts <system.webServer> der Stamm-App (übergeordnete App) ist die Standardeinstellung für veröffentlichte Apps mit dem .NET SDK.

Das Entfernen des Handlers oder deaktivieren der Vererbung wird zusätzlich zum Konfigurieren des Basispfads der App ausgeführt. Legen Sie den App-Basispfad in der Datei der App index.html auf den IIS-Alias fest, der beim Konfigurieren der Unter-App in IIS verwendet wird.

Konfigurieren Sie den Basispfad der App, indem Sie den Anweisungen in ASP.NET Core-App-Basispfad Blazorfolgen.

Brotli- und Gzip-Komprimierung

Dieser Abschnitt gilt nur für eigenständige Blazor WebAssembly Apps.

Dieser Abschnitt gilt nur für eigenständige Blazor WebAssembly Apps. Gehostete Apps verwenden eine standardmäßige Blazor ASP.NET Core-App-Datei web.config , nicht die in diesem Abschnitt verknüpfte Datei.

IIS kann über web.config so konfiguriert werden, dass Brotli- oder Gzip-komprimierte Blazor Ressourcen für eigenständige Blazor WebAssembly Apps bereitgestellt werden. Eine Beispielkonfigurationsdatei finden Sie unter web.config.

In den folgenden Szenarien kann eine zusätzliche Konfiguration der Beispieldatei web.config erforderlich sein:

  • Die Spezifikation der App ruft eine der folgenden Aktionen auf:
    • Bereitstellung komprimierter Dateien, die nicht durch die Beispieldatei web.config konfiguriert sind.
    • Bereitstellung von durch die Beispieldatei web.config konfigurierten komprimierten Dateien in einem unkomprimierten Format.
  • Die IIS-Konfiguration des Servers (z. B. applicationHost.config) stellt IIS-Standardwerte auf Serverebene bereit. Je nach Konfiguration auf Serverebene erfordert die App möglicherweise eine andere IIS-Konfiguration als die in der Beispieldatei web.config enthaltene.

Weitere Informationen zu benutzerdefinierten web.config Dateien finden Sie unter Verwendung eines benutzerdefinierten web.config Abschnitts.

Problembehandlung

Wenn ein 500 - Interner Serverfehler empfangen wird und IIS-Manager Fehler auslöst, wenn versucht wird, auf die Konfiguration der Website zuzugreifen, bestätigen Sie, dass das URL Rewrite Module installiert ist. Wenn das Modul nicht installiert ist, kann die web.config Datei nicht von IIS analysiert werden. Dadurch wird verhindert, dass der IIS-Manager die Konfiguration der Website lädt und die Website die statischen Dateien von Blazor bereitstellt.

Weitere Informationen zur Problembehandlung bei Bereitstellungen für IIS finden Sie unter "Problembehandlung" ASP.NET Core für Azure App Service und IIS.