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

Nota

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

ASP.NET le app devono essere distribuite in Servizio app di 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 del codice e quindi compila i file binari.

Questa guida fornisce concetti chiave e istruzioni per gli sviluppatori di ASP.NET. Se non è mai stato usato Servizio app di Azure, seguire prima l'avvio rapido ASP.NET e ASP.NET con database SQL esercitazione.

Visualizzare le versioni di runtime di .NET Framework supportate

In servizio app le istanze di Windows hanno già tutte le versioni di .NET Framework supportate installate. Per visualizzare le versioni di runtime e SDK di .NET Framework disponibili per l'utente, 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 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 nella 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 di runtime di .NET Framework

Per impostazione predefinita, servizio app usa la versione più recente di .NET Framework supportata per eseguire l'app ASP.NET. Per eseguire l'app usando .NET Framework 3.5, eseguire invece il comando seguente nella Cloud Shell (v2.0 indica 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 è possibile impostare le impostazioni dell'app e le stringhe 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 diweb.config locale consente di eseguire il debug dell'app in locale, ma il valore servizio app consente di eseguire l'app nel prodotto con 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.

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 distribuisce nel motore di distribuzione servizio app, ad esempio con Git o con distribuzione ZIP con automazione di compilazione abilitata, il motore di distribuzione servizio app seleziona il primo sito Web o il progetto applicazione Web che trova come app servizio app. È possibile specificare quale servizio app progetto deve usare specificando l'impostazione dell'appPROJECT. Ad esempio, eseguire quanto segue nella Cloud Shell:

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

Pagina Informazioni dettagliate sulle eccezioni

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 dell'eccezione dettagliata in servizio app, aprire il file Web.config e aggiungere l'elemento nell'elemento <customErrors mode="Off"/><system.web>. Ad esempio:

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

Ridistribuire l'app con l' Web.configaggiornata. 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