Hosting e distribuzione di ASP.NET CoreHost and deploy ASP.NET Core

In generale, per distribuire un'app ASP.NET Core in un ambiente host:In general, to deploy an ASP.NET Core app to a hosting environment:

  • Distribuire l'app pubblicata in una cartella nel server di hosting.Deploy the published app to a folder on the hosting server.
  • Configurare un gestore processi che avvia l'app quando arrivano richieste e la riavvia quando si blocca o quando il server viene riavviato.Set up a process manager that starts the app when requests arrive and restarts the app after it crashes or the server reboots.
  • Per la configurazione di un proxy inverso, configurare un proxy inverso per inoltrare le richieste all'app.For configuration of a reverse proxy, set up a reverse proxy to forward requests to the app.

Pubblicare in una cartellaPublish to a folder

Il comando dotnet publish compila il codice dell'app e copia il file necessario per eseguire l'app in una cartella publish.The dotnet publish command compiles app code and copies the files required to run the app into a publish folder. Quando si esegue la distribuzione da Visual Studio, il passaggio dotnet publish viene eseguito automaticamente prima della copia dei file nella destinazione di distribuzione.When deploying from Visual Studio, the dotnet publish step occurs automatically before the files are copied to the deployment destination.

Contenuto della cartellaFolder contents

La cartella publish contiene uno o più file di assembly di app, le dipendenze e facoltativamente il runtime di .NET.The publish folder contains one or more app assembly files, dependencies, and optionally the .NET runtime.

È possibile pubblicare un'app .NET Core come distribuzione indipendente o come distribuzione dipendente dal framework.A .NET Core app can be published as self-contained deployment or framework-dependent deployment. Se l'app è indipendente, i file di assembly che contengono il runtime .NET sono inclusi nella cartella publish.If the app is self-contained, the assembly files that contain the .NET runtime are included in the publish folder. 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.If the app is framework-dependent, the .NET runtime files aren't included because the app has a reference to a version of .NET that's installed on the server. Il modello di distribuzione predefinito è il modello dipendente dal framework.The default deployment model is framework-dependent. Per altre informazioni, vedere Distribuzione di applicazioni .NET Core.For more information, see .NET Core application deployment.

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.In addition to .exe and .dll files, the publish folder for an ASP.NET Core app typically contains configuration files, static assets, and MVC views. Per ulteriori informazioni, vedere Struttura di directory di ASP.NET Core.For more information, see Struttura di directory di ASP.NET Core.

Configurare un gestore processiSet up a process manager

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.An ASP.NET Core app is a console app that must be started when a server boots and restarted if it crashes. Per automatizzare le operazioni di avvio e riavvio, deve essere presente un gestore processi.To automate starts and restarts, a process manager is required. I gestori processi più comuni per ASP.NET Core sono:The most common process managers for ASP.NET Core are:

Configurare un proxy inversoSet up a reverse proxy

Se l'app usa il server Kestrel è possibile usare come server proxy inverso Nginx, Apache o IIS.If the app uses the Kestrel server, Nginx, Apache, or IIS can be used as a reverse proxy server. Il server proxy inverso riceve le richieste HTTP da Internet e le inoltra a Kestrel.A reverse proxy server receives HTTP requests from the Internet and forwards them to Kestrel.

Entrambe le configurazioni —con o senza un server proxy inverso— sono configurazioni di hosting supportate.Either configuration—with or without a reverse proxy server—is a supported hosting configuration. Per altre informazioni, vedere When to use Kestrel with a reverse proxy (Quando usare Kestrel con un proxy inverso).For more information, see When to use Kestrel with a reverse proxy.

Scenari con server proxy e servizi di bilanciamento del caricoProxy server and load balancer scenarios

Potrebbero essere necessari interventi di configurazione aggiuntivi per le app ospitate dietro a server proxy e a servizi di bilanciamento del carico.Additional configuration might be required for apps hosted behind proxy servers and load balancers. Senza alcuna configurazione aggiuntiva, un'app potrebbe non avere accesso allo schema (HTTP/HTTPS) e all'indirizzo IP remoto di origine di una richiesta.Without additional configuration, an app might not have access to the scheme (HTTP/HTTPS) and the remote IP address where a request originated. Per altre informazioni, vedere Configurare ASP.NET Core per l'utilizzo di server proxy e servizi di bilanciamento del carico.For more information, see Configure ASP.NET Core to work with proxy servers and load balancers.

Usare Visual Studio e MSBuild per automatizzare le distribuzioniUse Visual Studio and MSBuild to automate deployments

In molti casi la distribuzione richiede attività aggiuntive oltre alla copia dell'output da dotnet publish a un server.Deployment often requires additional tasks besides copying the output from dotnet publish to a server. Ad esempio è possibile che nella cartella publish siano necessari file aggiuntivi o vengano esclusi uno o più file.For example, extra files might be required or excluded from the publish folder. Per la distribuzione Web, Visual Studio usa MSBuild, che può essere personalizzato per eseguire molte altre attività durante la distribuzione.Visual Studio uses MSBuild for web deployment, and MSBuild can be customized to do many other tasks during deployment. Per altre informazioni, vedere Profili di pubblicazione di Visual Studio (con estensione 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).For more information, see Profili di pubblicazione di Visual Studio (con estensione pubxml) per la distribuzione di app ASP.NET Core and the Using MSBuild and Team Foundation Build book.

Mediante la funzionalità Pubblica sito Web o il supporto di Git incorporato è possibile eseguire direttamente la distribuzione di app da Visual Studio al Servizio app di Azure.By using the Publish Web feature or built-in Git support, apps can be deployed directly from Visual Studio to the Azure App Service. Azure DevOps Services supporta la distribuzione continua al Servizio app di Azure.Azure DevOps Services supports continuous deployment to Azure App Service. Per altre informazioni, vedere DevOps con ASP.NET Core e Azure.For more information, see DevOps with ASP.NET Core and Azure.

Pubblicare in AzurePublish to Azure

Vedere Pubblicare un'app ASP.NET Core in Azure con Visual Studio per istruzioni su come pubblicare un'app in Azure usando Visual Studio.See Pubblicare un'app ASP.NET Core in Azure con Visual Studio for instructions on how to publish an app to Azure using Visual Studio. Un altro esempio è disponibile in Creare un'app Web ASP.NET Core in Azure.An additional example is provided by Create an ASP.NET Core web app in Azure.

Pubblicare con MSDeploy in WindowsPublish with MSDeploy on Windows

Vedere Profili di pubblicazione di Visual Studio (con estensione 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.See Profili di pubblicazione di Visual Studio (con estensione pubxml) per la distribuzione di app ASP.NET Core for instructions on how to publish an app with a Visual Studio publish profile, including from a Windows command prompt using the dotnet msbuild command.

Internet Information Services (IIS)Internet Information Services (IIS)

Per le distribuzioni in Internet Information Services (IIS) con la configurazione fornita dal file Web. config , vedere gli articoli in Host ASP.NET Core in Windows con IIS.For deployments to Internet Information Services (IIS) with configuration provided by the web.config file, see the articles under Host ASP.NET Core in Windows con IIS.

Hosting in una Web farmHost in a 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.For information on configuration for hosting ASP.NET Core apps in a web farm environment (for example, deployment of multiple instances of your app for scalability), see Ospitare ASP.NET Core in una Web farm.

Eseguire controlli di integritàPerform health checks

Usare il middleware di controllo integrità per eseguire controlli di integrità su un'app e le relative dipendenze.Use Health Check Middleware to perform health checks on an app and its dependencies. Per ulteriori informazioni, vedere Controlli di integrità in ASP.NET Core.For more information, see Controlli di integrità in ASP.NET Core.

Risorse aggiuntiveAdditional resources