Distribuire le app ASP.NET Core in Servizio app di AzureDeploy ASP.NET Core apps to Azure App Service

Il servizio app di Azure è un servizio di piattaforma di cloud computing Microsoft per l'hosting di app Web, inclusa ASP.NET Core.Azure App Service is a Microsoft cloud computing platform service for hosting web apps, including ASP.NET Core.

Risorse utiliUseful resources

Documentazione del servizio app è la home page di documentazione, esercitazioni, esempi, guide introduttive e altre risorse per le app di Azure.App Service Documentation is the home for Azure Apps documentation, tutorials, samples, how-to guides, and other resources. Due importanti esercitazioni relative all'hosting di app ASP.NET Core sono:Two notable tutorials that pertain to hosting ASP.NET Core apps are:

Creare un'app Web ASP.NET Core in AzureCreate an ASP.NET Core web app in Azure
Usare Visual Studio per creare e distribuire un'app Web ASP.NET Core nel servizio app di Azure in Windows.Use Visual Studio to create and deploy an ASP.NET Core web app to Azure App Service on Windows.

Creare un'app ASP.NET Core nel Servizio app in LinuxCreate an ASP.NET Core app in App Service on Linux
Usare la riga di comando per creare e distribuire un'app Web ASP.NET Core nel servizio app di Azure in Linux.Use the command line to create and deploy an ASP.NET Core web app to Azure App Service on Linux.

Gli articoli seguenti sono disponibili nella documentazione di ASP.NET Core:The following articles are available in ASP.NET Core documentation:

Pubblicare un'app ASP.NET Core in Azure con Visual Studio
Informazioni su come pubblicare un'app ASP.NET Core in Servizio app di Azure con Visual Studio.Learn how to publish an ASP.NET Core app to Azure App Service using Visual Studio.

Distribuzione continua in Azure con Visual Studio e Git con ASP.NET Core
Informazioni su come creare un'app Web ASP.NET Core tramite Visual Studio e distribuirla nel Servizio app di Azure usando Git per la distribuzione continua.Learn how to create an ASP.NET Core web app using Visual Studio and deploy it to Azure App Service using Git for continuous deployment.

Creare la prima pipelineCreate your first pipeline
Impostare una build CI per un'app ASP.NET Core e quindi creare una versione di distribuzione continua in Servizio App di Azure.Set up a CI build for an ASP.NET Core app, then create a continuous deployment release to Azure App Service.

Azure Web App sandbox (Sandbox per app Web di Azure)Azure Web App sandbox
Individuare le limitazioni di esecuzione di runtime di Servizio app di Azure applicate dalla piattaforma per le app Azure.Discover Azure App Service runtime execution limitations enforced by the Azure Apps platform.

Risolvere i problemi relativi ai progetti ASP.NET Core
Riconoscere e risolvere i problemi di avvisi ed errori con i progetti ASP.NET Core.Understand and troubleshoot warnings and errors with ASP.NET Core projects.

Configurazione dell'applicazioneApplication configuration

PiattaformaPlatform

I runtime per le app a 64 bit (x64) e a 32 bit (x86) sono disponibili in Servizio app di Azure.Runtimes for 64-bit (x64) and 32-bit (x86) apps are present on Azure App Service. .NET Core SDK disponibile nel servizio app è a 32 bit, ma è possibile distribuire app a 64 bit compilate in locale usando la console Kudu o il processo di pubblicazione di Visual Studio.The .NET Core SDK available on App Service is 32-bit, but you can deploy 64-bit apps built locally using the Kudu console or the publish process in Visual Studio. Per altre informazioni, vedere la sezione Pubblicare e distribuire l'app.For more information, see the Publish and deploy the app section.

Per le app con dipendenze native, i runtime per le app a 32 bit (x86) sono disponibili in Servizio app di Azure.For apps with native dependencies, runtimes for 32-bit (x86) apps are present on Azure App Service. La versione di .NET Core SDK disponibile nel servizio app è a 32 bit.The .NET Core SDK available on App Service is 32-bit.

Per altre informazioni sui componenti e sui metodi di distribuzione del framework .NET Core, ad esempio informazioni sul runtime di .NET Core e su .NET Core SDK, vedere Informazioni su .NET Core: Composizione.For more information on .NET Core framework components and distribution methods, such as information on the .NET Core runtime and the .NET Core SDK, see About .NET Core: Composition.

PacchettiPackages

Includere i pacchetti NuGet seguenti per offrire funzionalità di registrazione automatica per le app distribuite in Servizio app di Azure:Include the following NuGet packages to provide automatic logging features for apps deployed to Azure App Service:

I pacchetti precedenti non sono disponibili dal metapacchetto Microsoft.AspNetCore.App.The preceding packages aren't available from the Microsoft.AspNetCore.App metapackage. Le app destinate a .NET Framework o che fanno riferimento al metapacchetto Microsoft.AspNetCore.App in modo esplicito deve fare riferimento ai singoli pacchetti nel file di progetto dell'app.Apps that target .NET Framework or reference the Microsoft.AspNetCore.App metapackage must explicitly reference the individual packages in the app's project file.

Eseguire l'override della configurazione delle app usando il portale di AzureOverride app configuration using the Azure Portal

Le impostazioni dell'app nel portale di Azure consentono di impostare le variabili di ambiente per l'app.App settings in the Azure Portal permit you to set environment variables for the app. Le variabili di ambiente possono essere utilizzate dal provider di configurazione delle variabili di ambiente.Environment variables can be consumed by the Environment Variables Configuration Provider.

Quando nel portale di Azure viene creata o modificata un'impostazione dell'app e viene selezionato il pulsante Salva, l'app Azure viene riavviata.When an app setting is created or modified in the Azure Portal and the Save button is selected, the Azure App is restarted. La variabile di ambiente risulterà disponibile per l'app dopo il riavvio del servizio.The environment variable is available to the app after the service restarts.

Quando un'app usa l'host generico, le variabili di ambiente non vengono caricate nella configurazione di un'app per impostazione predefinita e il provider di configurazione deve essere aggiunto dallo sviluppatore.When an app uses the Generic Host, environment variables aren't loaded into an app's configuration by default and the configuration provider must be added by the developer. Lo sviluppatore determina il prefisso delle variabili di ambiente quando viene aggiunto il provider di configurazione.The developer determines the environment variable prefix when the configuration provider is added. Per altre informazioni, vedere Host generico .NET e il provider di configurazione delle variabili di ambiente.For more information, see Host generico .NET and the Environment Variables Configuration Provider.

Quando un'app compila l'host con WebHost.CreateDefaultBuilder, le variabili di ambiente che configurano l'host usano il prefisso ASPNETCORE_.When an app builds the host using WebHost.CreateDefaultBuilder, environment variables that configure the host use the ASPNETCORE_ prefix. Per altre informazioni, vedere Host Web ASP.NET Core e il provider di configurazione delle variabili di ambiente.For more information, see Host Web ASP.NET Core and the Environment Variables Configuration Provider.

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

Il middleware di integrazione IIS, che consente di configurare il middleware delle intestazioni inoltrate in caso di hosting out-of-process, e il modulo ASP.NET Core sono configurati per inoltrare lo schema (HTTP/HTTPS) e l'indirizzo IP remoto di origine della richiesta.The IIS Integration Middleware, which configures Forwarded Headers Middleware when hosting out-of-process, and the ASP.NET Core Module are configured to forward the scheme (HTTP/HTTPS) and the remote IP address where the request originated. Potrebbero essere necessari interventi di configurazione aggiuntivi per le app ospitate dietro ulteriori server proxy e servizi di bilanciamento del carico.Additional configuration might be required for apps hosted behind additional proxy servers and load balancers. 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.

Monitoraggio e registrazioneMonitoring and logging

App Azure servizio offre le estensioni di registrazione ASP.NET Core, che consentono l'integrazione della registrazione per ASP.NET Core app.Azure App Service offers the ASP.NET Core Logging Extensions, which enable logging integration for ASP.NET Core apps. Per aggiungere automaticamente l'estensione a un servizio app, usare il processo di pubblicazione di Visual Studio con un profilo di pubblicazione del servizio app .To automatically add the extension to an App Service, use Visual Studio's Publish process with an App Service publish profile. Quando non si usa Visual Studio per distribuire un'app, installare manualmente l'estensione nel portale di Azure tramite la finestra di dialogoestensioni degli strumenti > di sviluppo del servizio app.When not using Visual Studio to deploy an app, manually install the extension in the Azure Portal via the App Service's Development Tools > Extensions dialog.

Per informazioni sul monitoraggio, la registrazione e la risoluzione dei problemi, vedere gli articoli seguenti:For monitoring, logging, and troubleshooting information, see the following articles:

Monitorare le app nel servizio app di AzureMonitor apps in Azure App Service
Informazioni su come esaminare le quote e le metriche per le app e i piani del servizio app.Learn how to review quotas and metrics for apps and App Service plans.

Abilitare la registrazione diagnostica per le app nel servizio app di AzureEnable diagnostics logging for apps in Azure App Service
Informazioni su come abilitare e accedere alla registrazione diagnostica per i codici di stato HTTP, le richieste non riuscite e l'attività del server Web.Discover how to enable and access diagnostic logging for HTTP status codes, failed requests, and web server activity.

Gestire gli errori in ASP.NET Core
Riconoscimento degli approcci comuni di gestione degli errori nelle app ASP.NET Core.Understand common approaches to handling errors in ASP.NET Core apps.

Risolvere i problemi relativi a ASP.NET Core in app Azure servizio e IIS
Informazioni su come diagnosticare i problemi delle distribuzioni del servizio app di Azure con le app ASP.NET Core.Learn how to diagnose issues with Azure App Service deployments with ASP.NET Core apps.

Errori comuni di Servizio app di Azure e IIS con ASP.NET Core
Informazioni sugli errori comuni di configurazione della distribuzione per le app ospitate dal servizio app di Azure o da IIS con suggerimenti per la risoluzione.See the common deployment configuration errors for apps hosted by Azure App Service/IIS with troubleshooting advice.

KeyRing di protezione dati e slot di distribuzioneData Protection key ring and deployment slots

Le chiavi di protezione dati sono salvate in modo permanente nella cartella %HOME%\ASP.NET\DataProtection-Keys.Data Protection keys are persisted to the %HOME%\ASP.NET\DataProtection-Keys folder. La cartella è associata all'archiviazione di rete e sincronizzata in tutti i computer che ospitano l'app.This folder is backed by network storage and is synchronized across all machines hosting the app. Le chiavi non vengono protette quando sono inattive.Keys aren't protected at rest. La cartella offre il KeyRing a tutte le istanze di un'app in un singolo slot di distribuzione.This folder supplies the key ring to all instances of an app in a single deployment slot. Gli slot di distribuzione separati, ad esempio gli slot di gestione temporanea e di produzione, non condividono un KeyRing.Separate deployment slots, such as Staging and Production, don't share a key ring.

Nel passaggio da uno slot di distribuzione all'altro, tutti i sistemi che usano la protezione dati non saranno in grado di decrittografare i dati archiviati usando il KeyRing all'interno dello slot precedente.When swapping between deployment slots, any system using data protection won't be able to decrypt stored data using the key ring inside the previous slot. Il middleware dei cookie di ASP.NET usa la protezione dati per proteggere i cookie.ASP.NET Cookie Middleware uses data protection to protect its cookies. Di conseguenza, gli utenti vengono disconnessi da un'app che usa il middleware dei cookie di ASP.NET standard.This leads to users being signed out of an app that uses the standard ASP.NET Cookie Middleware. Per una soluzione di KeyRing indipendente dallo slot, usare un provider di KeyRing esterno, ad esempio:For a slot-independent key ring solution, use an external key ring provider, such as:

  • Archiviazione BLOB di AzureAzure Blob Storage
  • Azure Key VaultAzure Key Vault
  • Archivio SQLSQL store
  • Cache RedisRedis cache

Per altre informazioni, vedere Provider di archiviazione chiavi in ASP.NET Core.For more information, see Provider di archiviazione chiavi in ASP.NET Core.

Distribuire la versione di anteprima di ASP.NET Core in Servizio app di AzureDeploy ASP.NET Core preview release to Azure App Service

Usare uno degli approcci seguenti se l'app si basa su una versione di anteprima di .NET Core:Use one of the following approaches if the app relies on a preview release of .NET Core:

Installare l'estensione del sito di anteprimaInstall the preview site extension

Se si verifica un problema con l'estensione del sito di anteprima, aprire un problema aspnet/AspNetCore.If a problem occurs using the preview site extension, open an aspnet/AspNetCore issue.

  1. Dal portale di Azure passare al servizio app.From the Azure Portal, navigate to the App Service.
  2. Selezionare l'app Web.Select the web app.
  3. Digitare "es" nella casella di ricerca per filtrare per "Estensioni" o scorrere l'elenco degli strumenti di gestione.Type "ex" in the search box to filter for "Extensions" or scroll down the list of management tools.
  4. Selezionare Estensioni.Select Extensions.
  5. Selezionare Aggiungi.Select Add.
  6. Selezionare l'estensione ASP.NET Core {X.Y} ({x64|x86}) Runtime nell'elenco, dove {X.Y} è la versione di anteprima di ASP.NET Core e {x64|x86} specifica la piattaforma.Select the ASP.NET Core {X.Y} ({x64|x86}) Runtime extension from the list, where {X.Y} is the ASP.NET Core preview version and {x64|x86} specifies the platform.
  7. Selezionare OK per accettare le condizioni legali.Select OK to accept the legal terms.
  8. Per installare l'estensione, selezionare OK.Select OK to install the extension.

Al termine dell'operazione, viene installata l'anteprima più recente di .NET Core.When the operation completes, the latest .NET Core preview is installed. Verificare l'installazione:Verify the installation:

  1. Selezionare Strumenti avanzati.Select Advanced Tools.

  2. Selezionare Vai in Strumenti avanzati.Select Go in Advanced Tools.

  3. Selezionare l'elemento di menu Console di debug > PowerShell.Select the Debug console > PowerShell menu item.

  4. Eseguire il comando seguente dal prompt di PowerShell.At the PowerShell prompt, execute the following command. Sostituire la versione di runtime di ASP.NET Core in {X.Y} e la piattaforma in {PLATFORM} nel comando:Substitute the ASP.NET Core runtime version for {X.Y} and the platform for {PLATFORM} in the command:

    Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.{PLATFORM}\
    

    Il comando restituisce True quando è installato il runtime di anteprima x64.The command returns True when the x64 preview runtime is installed.

Nota

L'architettura della piattaforma (x86 o x64) di un'app di Servizi app viene impostata nelle impostazioni dell'app nel portale di Azure per le app ospitate in un livello di hosting con calcolo di serie A o migliore.The platform architecture (x86/x64) of an App Services app is set in the app's settings in the Azure Portal for apps that are hosted on an A-series compute or better hosting tier. Se l'app viene eseguita in modalità in-process e l'architettura della piattaforma è configurata per 64 bit (x64), il modulo ASP.NET Core usa il runtime dell'anteprima a 64 bit, se presente.If the app is run in in-process mode and the platform architecture is configured for 64-bit (x64), the ASP.NET Core Module uses the 64-bit preview runtime, if present. Installare l'estensione ASP.NET Core {X.Y} (x64) Runtime.Install the ASP.NET Core {X.Y} (x64) Runtime extension.

Dopo aver installato il runtime di anteprima x64, eseguire il comando seguente nella finestra di comando di PowerShell di Kudu per verificare l'installazione.After installing the x64 preview runtime, run the following command in the Kudu PowerShell command window to verify the installation. Sostituire la versione di runtime di ASP.NET Core per {X.Y} nel comando:Substitute the ASP.NET Core runtime version for {X.Y} in the command:

Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64\

Il comando restituisce True quando è installato il runtime di anteprima x64.The command returns True when the x64 preview runtime is installed.

Nota

Le estensioni di ASP.NET Core abilitano funzionalità aggiuntive per ASP.NET Core nei Servizi app di Azure, ad esempio la registrazione di Azure.ASP.NET Core Extensions enables additional functionality for ASP.NET Core on Azure App Services, such as enabling Azure logging. L'estensione viene installata automaticamente durante la distribuzione da Visual Studio.The extension is installed automatically when deploying from Visual Studio. Se l'estensione non è installata, installarla per l'app.If the extension isn't installed, install it for the app.

Usare l'estensione del sito di anteprima con un modello ARMUse the preview site extension with an ARM template

Se per creare e distribuire le app si usa un modello ARM, è possibile usare il tipo di risorsa siteextensions per aggiungere l'estensione del sito a un'app Web.If an ARM template is used to create and deploy apps, the siteextensions resource type can be used to add the site extension to a web app. Ad esempio:For example:

{
    "type": "siteextensions",
    "name": "AspNetCoreRuntime",
    "apiVersion": "2015-04-01",
    "location": "[resourceGroup().location]",
    "properties": {
        "version": "[parameters('aspnetcoreVersion')]"
    },
    "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]"
    ]
}

Distribuire un'app di anteprima autonomaDeploy a self-contained preview app

Una distribuzione autonoma che ha come destinazione un runtime di anteprima include il runtime di anteprima nella distribuzione.A self-contained deployment (SCD) that targets a preview runtime carries the preview runtime in the deployment.

Per la distribuzione di un'app autonoma:When deploying a self-contained app:

Seguire le istruzioni riportate nella sezione Distribuire l'app autonoma.Follow the guidance in the Deploy the app self-contained section.

Usare Docker con app Web per contenitoriUse Docker with Web Apps for containers

L'hub Docker contiene le immagini di Docker più recenti per la versione di anteprima.The Docker Hub contains the latest preview Docker images. Le immagini possono essere usate come immagini di base.The images can be used as a base image. Usare l'immagine e distribuirla alle app Web per i contenitori normalmente.Use the image and deploy to Web Apps for Containers normally.

Pubblicare e distribuire l'appPublish and deploy the app

Distribuire l'app in modo dipendente dal frameworkDeploy the app framework-dependent

Per una distribuzione dipendente dal framework a 64-bit :For a 64-bit framework-dependent deployment:

  • Usare .NET Core SDK a 64 bit per compilare un'app a 64 bit.Use a 64-bit .NET Core SDK to build a 64-bit app.
  • Impostare Piattaforma su 64 bit in Configurazione > Impostazioni generali nel servizio app.Set the Platform to 64 Bit in the App Service's Configuration > General settings. L'app deve usare un piano di servizio Basic o superiore per abilitare la scelta del numero di bit della piattaforma.The app must use a Basic or higher service plan to enable the choice of platform bitness.
  1. Selezionare Compila > Pubblica {nome applicazione} dalla barra degli strumenti di Visual Studio oppure fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e selezionare Pubblica.Select Build > Publish {Application Name} from the Visual Studio toolbar or right-click the project in Solution Explorer and select Publish.
  2. Nella finestra di dialogo Selezionare una destinazione di pubblicazione. verificare che sia selezionata la voce Servizio app.In the Pick a publish target dialog, confirm that App Service is selected.
  3. Selezionare Avanzate.Select Advanced. Viene visualizzata la finestra di dialogo Pubblica.The Publish dialog opens.
  4. Nella finestra di dialogo Pubblica:In the Publish dialog:
    • Verificare che sia selezionata la configurazione Rilascio.Confirm that the Release configuration is selected.
    • Aprire l'elenco a discesa Modalità di distribuzione e selezionare Dipendente dal framework.Open the Deployment Mode drop-down list and select Framework-Dependent.
    • Selezionare Portabile come Runtime di destinazione.Select Portable as the Target Runtime.
    • Se durante la distribuzione è necessario rimuovere i file aggiuntivi, aprire Opzioni pubblicazione file e selezionare la casella di controllo che consente di rimuovere i file aggiuntivi nella destinazione.If you need to remove additional files upon deployment, open File Publish Options and select the check box to remove additional files at the destination.
    • Selezionare Salva.Select Save.
  5. Creare un nuovo sito o aggiornare un sito esistente seguendo le istruzioni rimanenti della pubblicazione guidata.Create a new site or update an existing site by following the remaining prompts of the publish wizard.

Distribuire l'app autonomaDeploy the app self-contained

Usare Visual Studio o gli strumenti dell'interfaccia della riga di comando (CLI) per una distribuzione autonoma (SCD).Use Visual Studio or the command-line interface (CLI) tools for a self-contained deployment (SCD).

  1. Selezionare Compila > Pubblica {nome applicazione} dalla barra degli strumenti di Visual Studio oppure fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e selezionare Pubblica.Select Build > Publish {Application Name} from the Visual Studio toolbar or right-click the project in Solution Explorer and select Publish.
  2. Nella finestra di dialogo Selezionare una destinazione di pubblicazione. verificare che sia selezionata la voce Servizio app.In the Pick a publish target dialog, confirm that App Service is selected.
  3. Selezionare Avanzate.Select Advanced. Viene visualizzata la finestra di dialogo Pubblica.The Publish dialog opens.
  4. Nella finestra di dialogo Pubblica:In the Publish dialog:
    • Verificare che sia selezionata la configurazione Rilascio.Confirm that the Release configuration is selected.
    • Aprire l'elenco a discesa Modalità di distribuzione e selezionare Completa.Open the Deployment Mode drop-down list and select Self-Contained.
    • Selezionare il runtime di destinazione dall'elenco a discesa Runtime di destinazione.Select the target runtime from the Target Runtime drop-down list. Il valore predefinito è win-x86.The default is win-x86.
    • Se durante la distribuzione è necessario rimuovere i file aggiuntivi, aprire Opzioni pubblicazione file e selezionare la casella di controllo che consente di rimuovere i file aggiuntivi nella destinazione.If you need to remove additional files upon deployment, open File Publish Options and select the check box to remove additional files at the destination.
    • Selezionare Salva.Select Save.
  5. Creare un nuovo sito o aggiornare un sito esistente seguendo le istruzioni rimanenti della pubblicazione guidata.Create a new site or update an existing site by following the remaining prompts of the publish wizard.

Impostazioni del protocollo (HTTPS)Protocol settings (HTTPS)

Le associazioni di protocollo protette consentono di specificare un certificato da usare per rispondere alle richieste su HTTPS.Secure protocol bindings allow you specify a certificate to use when responding to requests over HTTPS. L'associazione richiede un certificato privato valido (PFX) rilasciato per il nome host specifico.Binding requires a valid private certificate (.pfx) issued for the specific hostname. Per altre informazioni, vedere Esercitazione: Associare un certificato SSL personalizzato esistente al servizio app di Azure.For more information, see Tutorial: Bind an existing custom SSL certificate to Azure App Service.

Trasformare web.configTransform web.config

Se è necessario trasformare web.config in fase di pubblicazione (ad esempio, impostare variabili di ambiente in base a configurazione, profilo o ambiente), vedere Trasformare web.config.If you need to transform web.config on publish (for example, set environment variables based on the configuration, profile, or environment), see Trasformare web.config.

Risorse aggiuntiveAdditional resources

Il servizio app di Azure in Windows Server usa Internet Information Services (IIS).Azure App Service on Windows Server uses Internet Information Services (IIS). Gli argomenti seguenti riguardano la tecnologia IIS sottostante:The following topics pertain to the underlying IIS technology: