Distribuire le app ASP.NET Core in Servizio app di Azure

Il servizio app di Azure è un servizio di piattaforma di cloud computing Microsoft per l'hosting di app Web, inclusa ASP.NET Core.

Modelli di app Web affidabili

Per indicazioni sulla creazione di un'app moderna, affidabile, affidabile, affidabile, testabile, conveniente e scalabile ASP.NET Core, indipendentemente dal fatto che si tratti di un'app esistente o di refactoring di un'app esistente, vedi Modello di app Web Reliable Web for.NETYouTube.

Risorse utili

Documentazione del servizio app è la home page di documentazione, esercitazioni, esempi, guide introduttive e altre risorse per le app di Azure. Due importanti esercitazioni relative all'hosting di app ASP.NET Core sono:

Creare un'app Web ASP.NET Core in Azure
Usare Visual Studio per creare e distribuire un'app Web ASP.NET Core nel servizio app di Azure in Windows.

Creare un'app ASP.NET Core nel Servizio app in Linux
Usare la riga di comando per creare e distribuire un'app Web ASP.NET Core nel servizio app di Azure in Linux.

Per la versione di ASP.NET Core disponibile nel Servizio di app Azure, vedere il dashboard di ASP.NET Core per Servizio app.

Sottoscrivere il repository degli annunci per Servizio app e monitorare i problemi. Il team di Servizio app pubblica regolarmente annunci e scenari in arrivo in Servizio app.

Gli articoli seguenti sono disponibili nella documentazione di ASP.NET Core:

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.

Creare la prima pipeline
Impostare una build CI per un'app ASP.NET Core e quindi creare una versione di distribuzione continua in Servizio App di Azure.

Azure Web App sandbox (Sandbox per app Web di Azure)
Individuare le limitazioni di esecuzione di runtime di Servizio app di Azure applicate dalla piattaforma per le app Azure.

Risolvere i problemi ed eseguire il debug di progetti ASP.NET Core
Riconoscere e risolvere i problemi di avvisi ed errori con i progetti ASP.NET Core.

Configurazione dell'applicazione

Piattaforma

L'architettura della piattaforma (x86 o x64) di un'app di Servizio app viene specificata nelle impostazioni dell'app nel portale di Azure per le app ospitate in un livello di hosting con calcolo di serie A (Basic) o superiore. Verificare che le impostazioni di pubblicazione dell'app (ad esempio, nel profilo di pubblicazione (.pubxml) di Visual Studio) corrispondano all'impostazione nella configurazione del servizio dell'app nel portale di Azure.

I runtime per le app a 64 bit (x64) e a 32 bit (x86) sono disponibili in Servizio app di Azure. .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. Per altre informazioni, vedere la sezione Pubblicare e distribuire l'app.

Per le app con dipendenze native, i runtime per le app a 32 bit (x86) sono disponibili in Servizio app di Azure. La versione di .NET Core SDK disponibile nel servizio app è a 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.

Pacchetti

Includere i pacchetti NuGet seguenti per offrire funzionalità di registrazione automatica per le app distribuite in Servizio app di Azure:

È necessario fare riferimento ai pacchetti precedenti in modo esplicito nel file di progetto dell'app.

Eseguire l'override della configurazione delle app usando il portale di Azure

Le impostazioni dell'app nel portale di Azure consentono di impostare le variabili di ambiente per l'app. Le variabili di ambiente possono essere utilizzate dal provider di configurazione delle variabili di ambiente.

Quando nel portale di Azure viene creata o modificata un'impostazione dell'app e viene selezionato il pulsante Salva, l'app Azure viene riavviata. La variabile di ambiente risulterà disponibile per l'app dopo il riavvio del servizio.

Quando un'app usa l'host generico, le variabili di ambiente vengono caricate nella configurazione dell'app quando si chiama CreateDefaultBuilder per creare l'host. Per altre informazioni, vedere Host generico .NET in ASP.NET Core e Provider di configurazione delle variabili di ambiente.

Le impostazioni dell'app nel portale di Azure consentono di impostare le variabili di ambiente per l'app. Le variabili di ambiente possono essere utilizzate dal provider di configurazione delle variabili di ambiente.

Quando nel portale di Azure viene creata o modificata un'impostazione dell'app e viene selezionato il pulsante Salva, l'app Azure viene riavviata. La variabile di ambiente risulterà disponibile per l'app dopo il riavvio del servizio.

Quando un'app usa l'host Web, le variabili di ambiente vengono caricate nella configurazione dell'app quando si chiama CreateDefaultBuilder per creare l'host. Per altre informazioni, vedere Host Web ASP.NET Core e Provider di configurazione delle variabili di ambiente.

Scenari con server proxy e servizi di bilanciamento del carico

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. Potrebbero essere necessari interventi di configurazione aggiuntivi per le app ospitate dietro ulteriori server proxy e servizi di bilanciamento del carico. Per altre informazioni, vedere Configurare ASP.NET Core per l'utilizzo di server proxy e servizi di bilanciamento del carico.

Monitoraggio e registrazione

Le app ASP.NET Core distribuite in Servizio app di Azure ricevono automaticamente l'estensione di Servizio app ASP.NET Core Logging Integration (Integrazione di registrazione ASP.NET Core). L'estensione abilita l'integrazione della registrazione per le app ASP.NET Core in Servizio app di Azure.

Le app ASP.NET Core distribuite in Servizio app ricevono automaticamente un'estensione di Servizio app, ovvero le estensioni di registrazione di ASP.NET Core. L'estensione abilita l'integrazione della registrazione per le app ASP.NET Core in Servizio app di Azure.

Per informazioni sul monitoraggio, la registrazione e la risoluzione dei problemi, vedere gli articoli seguenti:

Monitorare le app in Servizio app di Azure
Informazioni su come esaminare le quote e le metriche per le app e i piani del servizio app.

Abilitare la registrazione diagnostica per le app nel Servizio app di Azure
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.

Gestire gli errori in ASP.NET Core
Riconoscimento degli approcci comuni di gestione degli errori nelle app ASP.NET Core.

Risolvere i problemi di ASP.NET Core in Servizio app di Azure e IIS
Informazioni su come diagnosticare i problemi delle distribuzioni del servizio app di Azure con le app ASP.NET Core.

Risoluzione di 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.

KeyRing di protezione dati e slot di distribuzione

Le chiavi di protezione dati sono salvate in modo permanente nella cartella %HOME%\ASP.NET\DataProtection-Keys. La cartella è associata all'archiviazione di rete e sincronizzata in tutti i computer che ospitano l'app. Le chiavi non vengono protette quando sono inattive. La cartella offre il KeyRing a tutte le istanze di un'app in un singolo slot di distribuzione. Gli slot di distribuzione separati, ad esempio gli slot di gestione temporanea e di produzione, non condividono un KeyRing.

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. Il middleware dei Cookie di ASP.NET usa la protezione dati per proteggere i relativi cookie. Di conseguenza, gli utenti vengono disconnessi da un'app che usa il middleware dei Cookie di ASP.NET standard. Per una soluzione di KeyRing indipendente dallo slot, usare un provider di KeyRing esterno, ad esempio:

  • Archiviazione BLOB di Azure
  • Insieme di credenziali chiave di Azure
  • Archivio SQL
  • Cache Redis

Per altre informazioni, vedere Provider di archiviazione chiavi in ASP.NET Core.

Distribuire un'app ASP.NET Core che usa un'anteprima di .NET Core

Per distribuire un'app che usa una versione di anteprima di .NET Core, vedere le risorse seguenti. Questi approcci vengono usati anche quando il runtime è disponibile, ma l'SDK non è stato installato in Servizio app di Azure.

Per la versione di ASP.NET Core disponibile nel Servizio di app Azure, vedere il dashboard di ASP.NET Core per Servizio app.

Vedere Selezionare la versione di .NET Core da usare per informazioni sulla selezione della versione di .NET SDK per le distribuzioni autonome.

Specificare la versione di .NET Core SDK usando Azure Pipelines

Usare scenari CI/CD di Servizio app di Azure per configurare una compilazione di integrazione continua con Azure DevOps. Dopo aver creato la compilazione di Azure DevOps, configurare facoltativamente la compilazione per l'uso di una versione specifica dell'SDK.

Specificare la versione di .NET Core SDK

Quando si usa il centro di distribuzione di Servizio app per creare una compilazione di Azure DevOps, la pipeline di compilazione predefinita include i passaggi per Restore, Build, Test e Publish. Per specificare la versione dell'SDK, selezionare il pulsante Aggiungi (+) nell'elenco Processo agente per aggiungere un nuovo passaggio. Cercare .NET Core SDK nella barra di ricerca.

Add the .NET Core SDK step

Spostare il passaggio nella prima posizione della compilazione in modo che i passaggi successivi usino la versione specificata di .NET Core SDK. Specificare la versione di .NET Core SDK. In questo esempio la versione dell'SDK è impostata su 3.0.100.

Completed SDK step

Per pubblicare una distribuzione autonoma, configurare la distribuzione autonoma nel passaggio Publish e specificare l'identificatore di runtime (RID).

Self-contained publish

Distribuire un'app di anteprima autonoma

Una distribuzione autonoma che ha come destinazione un runtime di anteprima include il runtime di anteprima nella distribuzione.

Per la distribuzione di un'app autonoma:

Seguire le istruzioni riportate nella sezione Distribuire l'app autonoma.

Usare Docker con app Web per contenitori

L'hub Docker in https://hub.docker.com/_/microsoft-dotnet contiene le immagini Docker di anteprima più recenti. Le immagini possono essere usate come immagini di base. Usare l'immagine e distribuirla alle app Web per i contenitori normalmente.

Installare l'estensione del sito di anteprima

Se si verifica un problema con l'estensione del sito di anteprima, aprire un problema dotnet/AspNetCore.

  1. Dal portale di Azure passare al servizio app.
  2. Selezionare l'app Web.
  3. Digitare "es" nella casella di ricerca per filtrare per "Estensioni" o scorrere l'elenco degli strumenti di gestione.
  4. Selezionare Estensioni.
  5. Selezionare Aggiungi.
  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.
  7. Selezionare OK per accettare le condizioni legali.
  8. Per installare l'estensione, selezionare OK.

Al termine dell'operazione, viene installata l'anteprima più recente di .NET Core. Verificare l'installazione:

  1. Selezionare Strumenti avanzati.

  2. Selezionare Vai in Strumenti avanzati.

  3. Selezionare l'elemento di menu Console di debug>PowerShell.

  4. Eseguire il comando seguente dal prompt di PowerShell. Sostituire la versione di runtime di ASP.NET Core in {X.Y} e la piattaforma in {PLATFORM} nel comando:

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

    Il comando restituisce True quando è installato il runtime di anteprima x64.

Nota

L'architettura della piattaforma (x86 o x64) di un'app di Servizio app viene specificata nelle impostazioni dell'app nel portale di Azure per le app ospitate in un livello di hosting con calcolo di serie A (Basic) o superiore. Verificare che le impostazioni di pubblicazione dell'app (ad esempio, nel profilo di pubblicazione (.pubxml) di Visual Studio) corrispondano all'impostazione nella configurazione del servizio dell'app nel portale di Azure.

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. Installare l'estensione ASP.NET Core {X.Y} (x64) Runtime usando il portale di Azure.

Dopo aver installato il runtime di anteprima x64, eseguire il comando seguente nella finestra di comando di PowerShell di Kudu di Azure per verificare l'installazione. Sostituire la versione di runtime di ASP.NET Core per {X.Y} nel comando seguente:

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

Il comando restituisce True quando è installato il runtime di anteprima x64.

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. L'estensione viene installata automaticamente durante la distribuzione da Visual Studio. Se l'estensione non è installata, installarla per l'app.

Usare l'estensione del sito di anteprima con un modello ARM

Se per creare e distribuire le app si usa un modello ARM, è possibile usare il tipo di risorsa Microsoft.Web/sites/siteextensions per aggiungere l'estensione del sito a un'app Web. Nell'esempio seguente l'estensione del sito di runtime ASP.NET Core 5.0 (x64) (AspNetCoreRuntime.5.0.x64) viene aggiunta all'app:

{
    ...
    "parameters": {
        "site_name": {
            "defaultValue": "{SITE NAME}",
            "type": "String"
        },
        ...
    },       
    ...
    "resources": [
        ...
        {
            "type": "Microsoft.Web/sites/siteextensions",
            "apiVersion": "2018-11-01",
            "name": "[concat(parameters('site_name'), '/AspNetCoreRuntime.5.0.x64')]",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
            ]
        }
    ]
}
    

Per il segnaposto {SITE NAME}, usare il nome dell'app in Servizio app di Azure (ad esempio, contoso).

Pubblicare e distribuire l'app

Per una distribuzione a 64 bit:

  • Usare .NET Core SDK a 64 bit per compilare un'app a 64 bit.
  • Impostare Piattaforma su 64 bit in Configurazione>Impostazioni generali nel servizio app. L'app deve usare un piano di servizio Basic o superiore per abilitare la scelta del numero di bit della piattaforma.

Distribuire l'app in modo dipendente dal framework

  1. Fare clic con il pulsante destro del mouse in Esplora soluzioni, quindi scegliere Pubblica. In alternativa, selezionare Compila>Pubblica {nome applicazione} sulla barra degli strumenti di Visual Studio.
  2. Nella finestra di dialogo Pubblica selezionare Azure>Avanti.
  3. Selezionare il servizio di Azure.
  4. Seleziona Avanzate. Viene visualizzata la finestra di dialogo Pubblica.
  5. Selezionare un gruppo di risorse e un piano di hosting oppure crearne di nuovi.
  6. Selezionare Fine.
  7. Nella pagina Pubblica :
    • Per Configurazione selezionare l'icona a forma di penna Modifica configurazione:
      • Verificare che sia selezionata la configurazione Rilascio.
      • Nell'elenco a discesa Modalità di distribuzione selezionare Dipendente dal framework.
      • Nell'elenco a discesa Runtime di destinazione selezionare il runtime desiderato. Il valore predefinito è win-x86.
    • Per rimuovere file aggiuntivi durante la distribuzione, aprire Opzioni pubblicazione file e selezionare la casella di controllo che consente di rimuovere i file aggiuntivi nella destinazione.
    • Seleziona Salva.
    • Seleziona Pubblica.

Distribuire l'app autonoma

Usare Visual Studio o l'interfaccia della riga di comando di .NET Core per una distribuzione autonoma (SCD).

  1. Fare clic con il pulsante destro del mouse in Esplora soluzioni, quindi scegliere Pubblica. In alternativa, selezionare Compila>Pubblica {nome applicazione} sulla barra degli strumenti di Visual Studio.
  2. Nella finestra di dialogo Pubblica selezionare Azure>Avanti.
  3. Selezionare il servizio di Azure.
  4. Seleziona Avanzate. Viene visualizzata la finestra di dialogo Pubblica.
  5. Selezionare un gruppo di risorse e un piano di hosting oppure crearne di nuovi.
  6. Selezionare Fine.
  7. Nella pagina Pubblica :
    • Per Configurazione selezionare l'icona a forma di penna Modifica configurazione:
      • Verificare che sia selezionata la configurazione Rilascio.
      • Nell'elenco a discesa Modalità di distribuzione selezionare Completa.
      • Nell'elenco a discesa Runtime di destinazione selezionare il runtime desiderato. Il valore predefinito è win-x86.
    • Per rimuovere file aggiuntivi durante la distribuzione, aprire Opzioni pubblicazione file e selezionare la casella di controllo che consente di rimuovere i file aggiuntivi nella destinazione.
    • Seleziona Salva.
    • Seleziona Pubblica.

Impostazioni del protocollo (HTTPS)

Le associazioni di protocollo protette consentono di specificare un certificato da usare per rispondere alle richieste su HTTPS. L'associazione richiede un certificato privato valido (PFX) rilasciato per il nome host specifico. Per altre informazioni, vedere Esercitazione: Associare un certificato SSL personalizzato esistente a Servizio app di Azure.

Trasformare 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.

Risorse aggiuntive

Il servizio app di Azure in Windows Server usa Internet Information Services (IIS). Kestrel e YARP sul front-end fornisce il servizio di bilanciamento del carico. Gli argomenti seguenti riguardano la tecnologia IIS sottostante: