Hosting e distribuzione di ASP.NET Core

In generale, per distribuire un'app ASP.NET Core in un ambiente host:

  • Distribuire l'app pubblicata in una cartella nel server di hosting.
  • Configurare un gestore processi che avvia l'app quando arrivano richieste e la riavvia quando si blocca o quando il server viene riavviato.
  • Per la configurazione di un proxy inverso, configurare un proxy inverso per inoltrare le richieste all'app.

Pubblicare in una cartella

Il comando dotnet publish compila il codice dell'app e copia il file necessario per eseguire l'app in una cartella publish. Quando si esegue la distribuzione da Visual Studio, il passaggio dotnet publish viene eseguito automaticamente prima della copia dei file nella destinazione di distribuzione.

Eseguire l'app pubblicata in locale

Per eseguire l'app pubblicata in locale, eseguire dotnet <ApplicationName>.dll dalla cartella publish .

File di impostazioni di pubblicazione

I file *.json vengono pubblicati per impostazione predefinita. Per pubblicare altri file di impostazioni, specificarli in un elemento <ItemGroup><Content Include= ... /> nel file di progetto. Nell'esempio seguente vengono pubblicati i file XML:

<ItemGroup>
  <Content Include="**\*.xml" Exclude="bin\**\*;obj\**\*"
    CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

Contenuto cartelle

La cartella publish contiene uno o più file di assembly di app, le dipendenze e facoltativamente il runtime di .NET.

È possibile pubblicare un'app .NET Core come distribuzione indipendente o come distribuzione dipendente dal framework. Se l'app è indipendente, i file di assembly che contengono il runtime .NET sono inclusi nella cartella publish. Se l'app è dipendente dal framework, i file di runtime .NET non sono inclusi, perché l'app contiene un riferimento a una versione di .NET installata nel server. Il modello di distribuzione predefinito è il modello dipendente dal framework. Per altre informazioni, vedere Distribuzione di applicazioni .NET Core.

Oltre ai file con estensione EXE e DLL la cartella publish di un'app ASP.NET Core contiene in genere i file di configurazione, gli asset statici e le visualizzazioni MVC. Per altre informazioni, vedere Struttura delle directory di ASP.NET Core.

Configurare un gestore processi

Un'app ASP.NET Core è un'app console che deve essere avviata all'avvio di un server e riavviata in caso di arresto anomalo del server stesso. Per automatizzare le operazioni di avvio e riavvio, deve essere presente un gestore processi. I gestori processi più comuni per ASP.NET Core sono:

Configurare un proxy inverso

Se l'app usa il server Kestrel è possibile usare come server proxy inverso Nginx, Apache o IIS. Il server proxy inverso riceve le richieste HTTP da Internet e le inoltra a Kestrel.

Entrambe le configurazioni, con o senza un server proxy inverso, sono configurazioni di hosting supportate. Per altre informazioni, vedere Quando usare Kestrel con un proxy inverso.

Entrambe le configurazioni, con o senza un server proxy inverso, sono configurazioni di hosting supportate. Per altre informazioni, vedere Quando usare Kestrel con un proxy inverso.

Scenari con server proxy e servizi di bilanciamento del carico

Potrebbero essere necessari interventi di configurazione aggiuntivi per le app ospitate dietro a server proxy e a servizi di bilanciamento del carico. Senza alcuna configurazione aggiuntiva, un'app potrebbe non avere accesso allo schema (HTTP/HTTPS) e all'indirizzo IP remoto di origine di una richiesta. Per altre informazioni, vedere Configurare ASP.NET Core per l'utilizzo di server proxy e servizi di bilanciamento del carico.

Usare Visual Studio e MSBuild per automatizzare le distribuzioni

In molti casi la distribuzione richiede attività aggiuntive oltre alla copia dell'output da dotnet publish a un server. Ad esempio è possibile che nella cartella publish siano necessari file aggiuntivi o vengano esclusi uno o più file. Per la distribuzione Web, Visual Studio usa MSBuild, che può essere personalizzato per eseguire molte altre attività durante la distribuzione. Per altre informazioni, vedere Profili di pubblicazione di Visual Studio (pubxml) per la distribuzione di app ASP.NET Core e il libro Using MSBuild and Team Foundation Build (Uso di MSBuild e Team Foundation Build).

Mediante la funzionalità Pubblica sito Web è possibile eseguire direttamente la distribuzione di app da Visual Studio al Servizio app di Azure. Azure DevOps Services supporta la distribuzione continua al Servizio app di Azure. Per altre informazioni, vedere DevOps per sviluppatori ASP.NET Core.

Pubblicare in Azure

Per istruzioni su come pubblicare l'app in Azure usando Visual Studio, vedere Pubblicare un'app ASP.NET Core in Azure con Visual Studio. Un altro esempio è disponibile in Creare un'app Web ASP.NET Core in Azure.

Pubblicare con MSDeploy in Windows

Vedere Profili di pubblicazione di Visual Studio (pubxml) per la distribuzione di app ASP.NET Core per istruzioni su come pubblicare un'app con un profilo di pubblicazione di Visual Studio, ad esempio da un prompt dei comandi di Windows usando il comando dotnet msbuild.

Internet Information Services (IIS)

Per le distribuzioni in Internet Information Services (IIS) con la configurazione fornita dal file web.config, vedere gli articoli in Ospitare ASP.NET Core in Windows con IIS.

Hosting in una Web farm

Per informazioni sulla configurazione per ospitare app ASP.NET Core in un ambiente Web farm (ad esempio, distribuzione di più istanze di un'app per la scalabilità), vedere Ospitare ASP.NET Core in una Web farm.

Hosting in Docker

Per altre informazioni, vedere Ospitare ASP.NET Core in contenitori Docker.

Eseguire controlli di integrità

Usare il middleware di controllo integrità per eseguire controlli di integrità su un'app e le relative dipendenze. Per altre informazioni, vedere Controlli di integrità in ASP.NET Core.

Risorse aggiuntive

In generale, per distribuire un'app ASP.NET Core in un ambiente host:

  • Distribuire l'app pubblicata in una cartella nel server di hosting.
  • Configurare un gestore processi che avvia l'app quando arrivano richieste e la riavvia quando si blocca o quando il server viene riavviato.
  • Per la configurazione di un proxy inverso, configurare un proxy inverso per inoltrare le richieste all'app.

Pubblicare in una cartella

Il comando dotnet publish compila il codice dell'app e copia il file necessario per eseguire l'app in una cartella publish. Quando si esegue la distribuzione da Visual Studio, il passaggio dotnet publish viene eseguito automaticamente prima della copia dei file nella destinazione di distribuzione.

Contenuto cartelle

La cartella publish contiene uno o più file di assembly di app, le dipendenze e facoltativamente il runtime di .NET.

È possibile pubblicare un'app .NET Core come distribuzione indipendente o come distribuzione dipendente dal framework. Se l'app è indipendente, i file di assembly che contengono il runtime .NET sono inclusi nella cartella publish. Se l'app è dipendente dal framework, i file di runtime .NET non sono inclusi, perché l'app contiene un riferimento a una versione di .NET installata nel server. Il modello di distribuzione predefinito è il modello dipendente dal framework. Per altre informazioni, vedere Distribuzione di applicazioni .NET Core.

Oltre ai file con estensione EXE e DLL la cartella publish di un'app ASP.NET Core contiene in genere i file di configurazione, gli asset statici e le visualizzazioni MVC. Per altre informazioni, vedere Struttura delle directory di ASP.NET Core.

Configurare un gestore processi

Un'app ASP.NET Core è un'app console che deve essere avviata all'avvio di un server e riavviata in caso di arresto anomalo del server stesso. Per automatizzare le operazioni di avvio e riavvio, deve essere presente un gestore processi. I gestori processi più comuni per ASP.NET Core sono:

Configurare un proxy inverso

Se l'app usa il server Kestrel è possibile usare come server proxy inverso Nginx, Apache o IIS. Il server proxy inverso riceve le richieste HTTP da Internet e le inoltra a Kestrel.

Entrambe le configurazioni, con o senza un server proxy inverso, sono configurazioni di hosting supportate. Per altre informazioni, vedere Quando usare Kestrel con un proxy inverso.

Scenari con server proxy e servizi di bilanciamento del carico

Potrebbero essere necessari interventi di configurazione aggiuntivi per le app ospitate dietro a server proxy e a servizi di bilanciamento del carico. Senza alcuna configurazione aggiuntiva, un'app potrebbe non avere accesso allo schema (HTTP/HTTPS) e all'indirizzo IP remoto di origine di una richiesta. Per altre informazioni, vedere Configurare ASP.NET Core per l'utilizzo di server proxy e servizi di bilanciamento del carico.

Usare Visual Studio e MSBuild per automatizzare le distribuzioni

In molti casi la distribuzione richiede attività aggiuntive oltre alla copia dell'output da dotnet publish a un server. Ad esempio è possibile che nella cartella publish siano necessari file aggiuntivi o vengano esclusi uno o più file. Per la distribuzione Web, Visual Studio usa MSBuild, che può essere personalizzato per eseguire molte altre attività durante la distribuzione. Per altre informazioni, vedere Profili di pubblicazione di Visual Studio (pubxml) per la distribuzione di app ASP.NET Core e il libro Using MSBuild and Team Foundation Build (Uso di MSBuild e Team Foundation Build).

Mediante la funzionalità Pubblica sito Web è possibile eseguire direttamente la distribuzione di app da Visual Studio al Servizio app di Azure. Azure DevOps Services supporta la distribuzione continua al Servizio app di Azure. Per altre informazioni, vedere DevOps per sviluppatori ASP.NET Core.

Pubblicare in Azure

Per istruzioni su come pubblicare l'app in Azure usando Visual Studio, vedere Pubblicare un'app ASP.NET Core in Azure con Visual Studio. Un altro esempio è disponibile in Creare un'app Web ASP.NET Core in Azure.

Pubblicare con MSDeploy in Windows

Vedere Profili di pubblicazione di Visual Studio (pubxml) per la distribuzione di app ASP.NET Core per istruzioni su come pubblicare un'app con un profilo di pubblicazione di Visual Studio, ad esempio da un prompt dei comandi di Windows usando il comando dotnet msbuild.

Internet Information Services (IIS)

Per le distribuzioni in Internet Information Services (IIS) con la configurazione fornita dal file web.config, vedere gli articoli in Ospitare ASP.NET Core in Windows con IIS.

Hosting in una Web farm

Per informazioni sulla configurazione per ospitare app ASP.NET Core in un ambiente Web farm (ad esempio, distribuzione di più istanze di un'app per la scalabilità), vedere Ospitare ASP.NET Core in una Web farm.

Hosting in Docker

Per altre informazioni, vedere Ospitare ASP.NET Core in contenitori Docker.

Risorse aggiuntive