Condividi tramite


Ospitare e distribuire ASP.NET Core Blazor WebAssembly con IIS

Annotazioni

Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 10 di questo articolo.

Avvertimento

Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere i criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 9 di questo articolo.

Questo articolo illustra come ospitare e distribuire tramite Internet Information Services (IIS).This article explain how to host and deploy Blazor WebAssembly using Internet Information Services (IIS).

IIS è un file server statico in grado di supportare le Blazor app. Per configurare IIS per ospitare Blazor, vedere Creare un sito Web statico in IIS.

Gli asset pubblicati sono creati nella cartella /bin/Release/{TARGET FRAMEWORK}/publish o bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish, dove il segnaposto {TARGET FRAMEWORK} è il framework di destinazione. Ospitare il contenuto della publish cartella nel server Web o nel servizio di hosting.

File web.config

Quando viene pubblicato un Blazor progetto, viene creato un web.config file con la configurazione IIS seguente:

  • Tipi MIME
  • La compressione HTTP è abilitata per i tipi MIME seguenti:
    • application/octet-stream
    • application/wasm
  • Vengono stabilite le regole del modulo di riscrittura URL:
    • Gestire la sottodirectory in cui risiedono gli asset statici dell'app (wwwroot/{PATH REQUESTED}).
    • Creare il routing di fallback SPA in modo che le richieste di risorse non di file vengano reindirizzate al documento predefinito dell'applicazione nella cartella delle risorse statiche (wwwroot/index.html).

Uso di un oggetto personalizzato web.config

Per usare un file personalizzato web.config :

  1. Posizionare il file personalizzato web.config nella cartella radice del progetto.
  2. Pubblicare il progetto. Per altre informazioni, vedere Ospitare e distribuire ASP.NET Core Blazor.
  1. Posizionare il file personalizzato web.config nella cartella radice del progetto. Per una soluzione ospitataBlazor WebAssembly, posizionare il file nella Server cartella del progetto.
  2. Pubblicare il progetto. Per una soluzione ospitata Blazor WebAssembly, pubblica la soluzione dal progetto Server. Per altre informazioni, vedere Ospitare e distribuire ASP.NET Core Blazor.

Se la generazione o la trasformazione dell'SDK web.config durante la pubblicazione non sposta il file negli asset pubblicati nella publish cartella o modifica la configurazione personalizzata nel file personalizzato web.config , usare uno degli approcci seguenti in base alle esigenze per assumere il controllo completo del processo:

  • Se l'SDK non genera il file, ad esempio, in un'app autonoma Blazor WebAssembly in /bin/Release/{TARGET FRAMEWORK}/publish/wwwroot o bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish, dove il {TARGET FRAMEWORK} segnaposto è il framework di destinazione, impostare la <PublishIISAssets> proprietà su true nel file di progetto (.csproj). In genere per le app WebAssembly autonome, questa è l'unica impostazione necessaria per spostare un file personalizzato web.config e impedire la trasformazione del file da parte dell'SDK.

    <PropertyGroup>
      <PublishIISAssets>true</PublishIISAssets>
    </PropertyGroup>
    
  • Disabilitare la trasformazione dell'SDK nel file di progetto web.config (.csproj):

    <PropertyGroup>
      <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
    </PropertyGroup>
    
  • Aggiungere una destinazione personalizzata al file di progetto (.csproj) per spostare un file personalizzato web.config . Nell'esempio seguente il file personalizzato web.config viene inserito dallo sviluppatore nella radice del progetto. Se il web.config file si trova altrove, specificare il percorso del file in SourceFiles. Nell'esempio seguente viene specificata la cartella publish con $(PublishDir), ma si può fornire un percorso a DestinationFolder come posizione di output personalizzata.

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

Installare il modulo di riscrittura URL

URL Rewrite Module è necessario per riscrivere gli URL. Il modulo non viene installato per impostazione predefinita e non è disponibile per l'installazione come funzionalità del servizio ruolo Server Web (IIS). Il modulo deve essere scaricato dal sito Web IIS. Usare l'Installazione guidata della piattaforma Web per installare il modulo:

  1. In locale, passare alla pagina di download di URL Rewrite Module. Per la versione inglese, selezionare WebPI per scaricare il programma di installazione WebPI. Per altre lingue, selezionare l'architettura appropriata per il server (x86 o x64) per scaricare il programma di installazione.
  2. Copiare il programma di installazione nel server. Eseguire il programma di installazione. Selezionare il pulsante Installa e accettare le condizioni di licenza. Al termine dell'installazione non è necessario un riavvio del server.

Configurare il sito Web

Impostare il percorso fisico del sito Web sulla cartella dell'app. La cartella contiene:

  • File web.config usato da IIS per configurare il sito Web, incluse le regole di reindirizzamento e i tipi di contenuto di file necessari.
  • Cartella degli asset statici dell'app.

Eseguire come sottoapplicazione IIS

Se un'app autonoma è ospitata come sotto-app IIS, eseguire una delle operazioni seguenti:

  • Disabilitare il gestore del modulo core ASP.NET ereditato.

    Rimuovere il gestore dal file pubblicato Blazor dell'app aggiungendo una sezione web.config alla sezione <handlers> del file:

    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    
  • Disabilitare l'ereditarietà della sezione dell'app radice (padre) <system.webServer> utilizzando un elemento <location> con inheritInChildApplications impostato a 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>
    

    Annotazioni

    La disabilitazione dell'ereditarietà della sezione radice (padre) dell'app <system.webServer> è la configurazione predefinita per le app pubblicate tramite .NET SDK.

La rimozione del gestore o la disabilitazione dell'ereditarietà viene eseguita oltre alla configurazione del percorso di base dell'app. Impostare il percorso di base dell'app nel file dell'app index.html sull'alias IIS usato durante la configurazione dell'app secondaria in IIS.

Configurare il percorso di base dell'app seguendo le indicazioni riportate in ASP.NET Core percorso di base dell'appBlazor.

Compressione Brotli e Gzip

Questa sezione si applica solo alle app autonome Blazor WebAssembly .

Questa sezione si applica solo alle app autonome Blazor WebAssembly . Le app ospitate Blazor usano un file di app web.config core ASP.NET predefinito, non il file collegato in questa sezione.

IIS può essere configurato tramite web.config per servire risorse compresse Blazor con Brotli o Gzip per app autonome Blazor WebAssembly. Per un file di configurazione di esempio, vedere web.config.

Potrebbe essere necessaria una configurazione aggiuntiva del file di esempio web.config negli scenari seguenti:

  • La specifica dell'app richiede uno dei seguenti elementi:
    • Gestione di file compressi non configurati dal file di esempio web.config .
    • Gestione di file compressi configurati dal file di esempio web.config in un formato non compresso.
  • La configurazione IIS del server ,ad esempio , applicationHost.configfornisce le impostazioni predefinite iis a livello di server. A seconda della configurazione a livello di server, l'app potrebbe richiedere una configurazione IIS diversa da quella contenuta nel file di esempio web.config .

Per altre informazioni sui file personalizzati web.config , vedere la sezione Uso di un file personalizzato web.config .

Risoluzione dei problemi

Se si riceve un errore interno del server 500 e Gestione IIS genera errori durante il tentativo di accedere alla configurazione del sito Web, verificare che sia installato URL Rewrite Module. Quando il modulo non è installato, il web.config file non può essere analizzato da IIS. Ciò impedisce a Gestione IIS di caricare la configurazione del sito Web e al sito Web di fornire i file statici di Blazor.

Per altre informazioni sulla risoluzione dei problemi relativi alle distribuzioni in IIS, vedere Risolvere i problemi di ASP.NET Core nel servizio app Azure e IIS.