Il runtime .NET

Il runtime .NET è lo stack software responsabile dell'installazione del codice e delle dipendenze dell'applicazione e della sua esecuzione nell'ambiente flessibile.

Versioni di .NET

.NET 8 è creato utilizzando buildpack. Per l'elenco completo delle versioni di .NET supportate e delle versioni di Ubuntu corrispondenti, consulta la pianificazione del supporto del runtime.

Per utilizzare una versione di .NET supportata, devi:

  • Aggiorna il file di progetto con la versione di .NET che vuoi utilizzare.

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
      </PropertyGroup>
    
      <ItemGroup>
        <None Update="app.yaml">
          <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
        </None>
      </ItemGroup>
    
    </Project>
    

    Per maggiori informazioni, vedi Eseguire la migrazione da ASP.NET Core 3.1 a 6.0.

  • Installa gcloud CLI versione 420.0.0 o successive. Puoi aggiornare gli strumenti CLI eseguendo il comando gcloud components update. Per visualizzare la versione installata, puoi eseguire il comando gcloud version.

  • Specifica l'impostazione operating_system nel file app.yaml:

      runtime: aspnetcore
      env: flex
    
      runtime_config:
          operating_system: "ubuntu22"
    
  • Se vuoi, puoi specificare una versione del runtime includendo l'impostazione runtime_version nel file app.yaml. Per impostazione predefinita, App Engine utilizza l'ultima versione LTS di .NET disponibile se l'impostazione runtime_version non è specificata. Ad esempio, il file app.yaml ha il seguente aspetto quando si specifica .NET 8 su Ubuntu 22:

      runtime: aspnetcore
      env: flex
    
      runtime_config:
          runtime_version: "8"
          operating_system: "ubuntu22"
    

Versioni precedenti dell'ambiente di runtime

Per scegliere come target una versione specifica dell'SDK .NET, aggiorna il file di progetto. Per maggiori informazioni, vedi Eseguire la migrazione da ASP.NET Core 3.1 a 6.0.

Se vuoi utilizzare GKE o altri host Docker, devi creare un Dockerfile che copi il codice dell'applicazione e installi le dipendenze. Per ulteriori informazioni, vedi Runtime personalizzati.

Per eseguire il deployment dell'app .NET, esegui i seguenti comandi dalla directory radice in cui si trova l'app:

    dotnet restore
    dotnet publish -c Release
    gcloud app deploy

Supporto di altri runtime .NET

Se devi utilizzare una versione di .NET non supportata, puoi creare un runtime personalizzato e selezionare un'immagine di base valida con la versione di .NET che ti serve.

Per le immagini di base fornite da Google o le immagini di base Docker .NET, consulta Creazione di runtime personalizzati.

Proxy HTTPS e di forwarding

App Engine termina la connessione HTTPS al bilanciatore del carico e inoltra la richiesta alla tua applicazione. Le applicazioni possono esaminare X-Forwarded-Proto per osservare se il protocollo originale era HTTP o HTTPS.

Alcune applicazioni devono anche determinare l'indirizzo IP dell'utente. Questa opzione è disponibile nell'intestazione standard X-Forwarded-For.

Estensione della durata

Il runtime .NET dell'ambiente flessibile può essere utilizzato per creare un runtime personalizzato. I runtime personalizzati vengono configurati tramite un Dockerfile.

Puoi personalizzare Dockerfile e .dockerignore come preferisci. Infine, dovrai specificare runtime: custom anziché runtime: aspnetcore in app.yaml. Per saperne di più, consulta Personalizzazione del runtime .NET.

Variabili di ambiente

Le seguenti variabili di ambiente sono impostate dall'ambiente di runtime:

Variabile di ambiente Descrizione
GAE_INSTANCE Il nome dell'istanza corrente.
GAE_MEMORY_MB La quantità di memoria disponibile per il processo dell'applicazione.
GAE_SERVICE Il nome del servizio specificato nel file app.yaml dell'applicazione o, se non è specificato alcun nome del servizio, è impostato su default.
GAE_VERSION L'etichetta della versione dell'applicazione attuale.
GOOGLE_CLOUD_PROJECT L'ID progetto associato alla tua applicazione, visibile nella console Google Cloud
PORT La porta che riceverà le richieste HTTP.

Puoi impostare variabili di configurazione aggiuntive con appsettings.json.

Server di metadati

Ogni istanza della tua applicazione può utilizzare il server di metadati di Compute Engine per interrogare le informazioni sull'istanza, inclusi il nome host, l'indirizzo IP esterno, l'ID istanza, i metadati personalizzati e le informazioni sull'account di servizio. App Engine non consente di impostare metadati personalizzati per ogni istanza, ma puoi impostare metadati personalizzati a livello di progetto e leggerli dalle istanze App Engine e Compute Engine.

Questa funzione di esempio utilizza il server dei metadati per ottenere l'indirizzo IP esterno dell'istanza:

var client = new HttpClient();
client.DefaultRequestHeaders.Add("Metadata-Flavor", new[] { "Google" });
response = await client.GetStringAsync(
    "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip");