Esercizio - Eseguire l'app Web in locale

Completato

In questo esercizio si vedrà come:

  • Eseguire l'app Web in locale e visualizzarla in un browser.
  • Esaminare il modo in cui viene gestita l'app Web.

Eseguire l'app Web e visualizzare in un browser

Eseguire l'app Web in Visual Studio Code e visualizzare in un browser:

  1. In Visual Studio Code premere F5 per eseguire l'app.

    Visual Studio Code:

    • Attiva il comando dotnet run dell'interfaccia della riga di comando di .NET che compila ed esegue l'applicazione.
    • Collega il debugger all'applicazione in esecuzione.

    La prima volta che il progetto viene eseguito in Visual Studio Code, viene visualizzato il prompt Seleziona debugger.

  2. Al prompt Seleziona debugger del riquadro comandi nella parte superiore dell'interfaccia utente di Visual Studio Code selezionare C#. Al prompt successivo selezionare la configurazione di avvio predefinita (C#: MyWebApp [Default Configuration]):

    Screenshot della scelta di Seleziona debugger nel riquadro comandi.

    Il browser predefinito viene avviato in http://localhost:{PORT}, che mostra la risposta dell'app. Il segnaposto {PORT} è la porta casuale assegnata all'app quando viene creato il progetto dell'app. Se è necessario modificare la porta a causa di un conflitto di porte locali, modificare la porta nel file Properties/launchSettings.json del progetto.

    Risposta visualizzata nel browser:

    Screenshot di un browser che mostra l'output di testo.

  3. Chiudere la finestra del browser.

  4. In Visual Studio:

    • Nel menu Esegui selezionare Arresta debug.
    • Sulla tastiera premere MAIUSC+F5.

Eseguire l'app Web usando l'interfaccia della riga di comando di .NET:

  1. Da un terminale o dalla riga di comando accedere alla directory del progetto MyWebApp contenente il file MyWebApp.csproj.

  2. Compilare ed eseguire l'app con il comando seguente:

    dotnet run
    

    Il progetto viene compilato, eseguito e mostra l'output seguente nella riga di comando:

    C:\MyWebApp> dotnet run
    Building...
    info: Microsoft.Hosting.Lifetime[14]
            Now listening on: http://localhost:5267
    info: Microsoft.Hosting.Lifetime[0]
            Application started. Press Ctrl+C to shut down.
    

    Poiché il numero di porta nell'URL specificato viene impostato in modo casuale nella configurazione al momento della creazione del progetto, l'endpoint potrebbe avere un numero di porta diverso.

  3. Aprire un browser per l'URL generato in corrispondenza dell'output della riga di comando, viene visualizzata la risposta Hello World! dell'app:

    Screenshot di un browser che mostra l'output di testo.

  4. Per arrestare l'app, premere CTRL+C nella riga di comando.

Modalità di gestione dell'app Web

Quando l'app viene compilata ed eseguita, vengono eseguiti i passaggi seguenti:

Compilazione e configurazione:

  • MSBuild viene richiamato per ripristinare le dipendenze e compilare il progetto. MSBuild elabora il file di progetto MyWebApp.csproj e compila il codice sorgente in un assembly.
  • L'app legge le impostazioni di configurazione, incluse le impostazioni specificate in launchSettings.json per il profilo di avvio predefinito (la prima elencata).

Configurazione host:

  • Il metodo WebApplication.CreateBuilder in Program.cs configura l'host Web. Per impostazione predefinita, questo metodo configura Kestrel come server Web. Kestrel è un server Web multipiattaforma per ASP.NET Core progettato per prestazioni elevate.
  • Kestrel inizia ad ascoltare le richieste HTTP in ingresso negli URL configurati, incluso HTTPS, se specificato.

Gestione richieste:

  • Quando viene ricevuta una richiesta, Kestrel lo inoltra alla pipeline middleware ASP.NET Core.
  • La pipeline middleware elabora la richiesta tramite una serie di componenti middleware, che possono gestire attività come l'autenticazione, la registrazione e il routing.
  • Se la richiesta corrisponde a una route definita, viene eseguito l'endpoint corrispondente. In questo caso, l'endpoint app.MapGet("/", () => "Hello World!") gestisce le richieste all'URL radice e restituisce la stringa Hello World!.

Risposta:

  • La risposta, che in questo caso è la stringa "Hello World!", viene inviata di nuovo tramite la pipeline middleware a Kestrel, che quindi lo invia al client.