Configurare un'app ASP.NET Core per Servizio app di Azure

Nota

Per ASP.NET Core, vedere Configurare un'app core ASP.NET per il servizio app Azure. Se l'app ASP.NET viene eseguita in un contenitore Windows o Linux personalizzato, vedere Configurare un contenitore personalizzato per app Azure Servizio.

ASP.NET le app devono essere distribuite nel servizio app Azure come file binari compilati. Lo strumento di pubblicazione di Visual Studio compila la soluzione e quindi distribuisce direttamente i file binari compilati, mentre il motore di distribuzione servizio app distribuisce prima il repository di codice e quindi compila i file binari.

Questa guida fornisce concetti chiave e istruzioni per gli sviluppatori ASP.NET. Se non si è mai usato app Azure Service, seguire prima di tutto l'esercitazione introduttiva ASP.NET e ASP.NET con database SQL.

Visualizzare le versioni di runtime di .NET Framework supportate

In servizio app, tutte le versioni di .NET Framework supportate sono già installate nelle istanze di Windows. Per visualizzare il runtime di .NET Framework e le versioni sdk disponibili, passare a https://<app-name>.scm.azurewebsites.net/DebugConsole ed eseguire il comando appropriato nella console basata su browser:

Per le versioni di runtime CLR 4 (.NET Framework 4 e versioni successive):

ls "D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework"

La versione più recente di .NET Framework potrebbe non essere immediatamente disponibile.

Per le versioni di runtime di CLR 2 (.NET Framework 3.5 e versioni successive):

ls "D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework"

Visualizzare la versione corrente del runtime di .NET Framework

Eseguire il comando seguente in Cloud Shell:

az webapp config show --resource-group <resource-group-name> --name <app-name> --query netFrameworkVersion

Un valore indica v4.0 che viene usata la versione CLR 4 (.NET Framework 4.x) più recente. Un valore indica v2.0 che viene usata una versione CLR 2 (.NET Framework 3.5).

Impostare la versione del runtime di .NET Framework

Per impostazione predefinita, servizio app usa la versione di .NET Framework supportata più recente per eseguire l'app ASP.NET. Per eseguire l'app usando .NET Framework 3.5, eseguire invece il comando seguente in Cloud Shell (v2.0 significa CLR 2):

az webapp config set --resource-group <resource-group-name> --name <app-name> --net-framework-version v2.0

Accedere alle variabili di ambiente

In servizio app puoi impostare le impostazioni dell'app e le stringa di connessione all'esterno del codice dell'app. È quindi possibile accedervi in qualsiasi classe usando il modello di ASP.NET standard:

using System.Configuration;
...
// Get an app setting
ConfigurationManager.AppSettings["MySetting"];
// Get a connection string
ConfigurationManager.ConnectionStrings["MyConnection"];
}

Se si configura un'impostazione dell'app con lo stesso nome in servizio app e in web.config, il valore servizio app ha la precedenza sul valore web.config. Il valore web.config locale consente di eseguire il debug dell'app in locale, ma il valore servizio app consente di eseguire l'app nel prodotto con le impostazioni di produzione. Le stringhe di connessione funzionano nello stesso modo. In questo modo, è possibile mantenere i segreti dell'applicazione all'esterno del repository di codice e accedere ai valori appropriati senza modificare il codice.

Nota

Prendere in considerazione opzioni di connettività più sicure che non richiedono affatto segreti di connessione. Per altre informazioni, vedere Proteggere la connettività ai servizi e ai database di Azure dal servizio app Azure.

Distribuire soluzioni multiprogetto

Quando una soluzione di Visual Studio include più progetti, il processo di pubblicazione di Visual Studio include già la selezione del progetto da distribuire. Quando si esegue la distribuzione nel motore di distribuzione servizio app, ad esempio con Git o con distribuzione ZIP con automazione della compilazione abilitata, il motore di distribuzione servizio app seleziona il primo sito Web o il progetto di applicazione Web trovato come app servizio app. È possibile specificare quale servizio app di progetto usare specificando l'impostazione dell'appPROJECT. Ad esempio, eseguire quanto segue in Cloud Shell:

az webapp config appsettings set --resource-group <resource-group-name> --name <app-name> --settings PROJECT="<project-name>/<project-name>.csproj"

Pagina Get detailed exceptions (Ottieni eccezioni dettagliate)

Quando l'app ASP.NET genera un'eccezione nel debugger di Visual Studio, il browser visualizza una pagina di eccezione dettagliata, ma in servizio app tale pagina viene sostituita da un messaggio di errore generico. Per visualizzare la pagina dettagliata dell'eccezione in servizio app, aprire il file Web.config e aggiungere l'elemento sotto l'elemento <customErrors mode="Off"/> <system.web> . Ad esempio:

<system.web>
    <customErrors mode="Off"/>
</system.web>

Ridistribuire l'app con il file Web.config aggiornato. Verrà ora visualizzata la stessa pagina dettagliata dell'eccezione.

Accedere ai log di diagnostica

È possibile aggiungere messaggi di diagnostica nel codice dell'applicazione usando System.Diagnostics.Trace. Ad esempio:

Trace.TraceError("Record not found!"); // Error trace
Trace.TraceWarning("Possible data loss"); // Warning trace
Trace.TraceInformation("GET /Home/Index"); // Information trace

Per accedere ai log della console generati dall'interno del codice dell'applicazione nel servizio app, attivare la registrazione diagnostica eseguendo il comando seguente in Cloud Shell:

az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose

I valori possibili per --level sono: Error, Warning, Info e Verbose. Ogni livello successivo include il livello precedente. Ad esempio, Error include solo i messaggi di errore, mentre Verbose include tutti i messaggi.

Dopo aver attivato la registrazione diagnostica, eseguire il comando seguente per visualizzare il flusso di registrazione:

az webapp log tail --resource-group <resource-group-name> --name <app-name>

Se i log di console non sono immediatamente visibili, controllare nuovamente dopo 30 secondi.

Nota

È anche possibile esaminare i file di log nel browser all'indirizzo https://<app-name>.scm.azurewebsites.net/api/logs/docker.

Per interrompere lo streaming dei log in qualsiasi momento, digitare Ctrl+C.

Altre risorse