Il runtime .NET

Il runtime .NET è lo stack software responsabile installando il codice e le dipendenze dell'applicazione per poi eseguirle dell'applicazione nell'ambiente flessibile.

Versioni .NET

.NET 8 viene creato buildpacks. Per l'elenco completo delle Le versioni .NET e le relative versioni la versione più recente, consulta la pianificazione del supporto del runtime.

Per utilizzare un modello supportato .NET, 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 ulteriori informazioni, vedi Eseguire la migrazione da ASP.NET Core da 3.1 a 6.0.

  • Installa gcloud CLI versione 420.0.0 o successiva. Puoi aggiornare Strumenti dell'interfaccia a riga di comando eseguendo il aggiornamento dei componenti gcloud . Per visualizzare la versione installata, puoi eseguire Comando gcloud version.

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

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

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

Versioni precedenti del runtime

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

Per utilizzare GKE o altri host Docker, devi creare un'istanza Dockerfile che copia il codice e le installazioni dell'applicazione delle dipendenze. Per ulteriori informazioni, vedi Runtime personalizzati.

Per eseguire il deployment dell'app .NET, esegui questi comandi nella directory principale in cui si trova l'app:

    dotnet restore
    dotnet publish -c Release
    gcloud app deploy

Supporto per altri runtime .NET

Se devi utilizzare una versione di .NET non supportata, puoi creare un'istanza runtime personalizzato e seleziona un'immagine di base valida con la versione .NET necessaria.

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

Proxy HTTPS e di forwarding

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

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

Estensione del runtime

È possibile utilizzare il runtime .NET dell'ambiente flessibile per creare un runtime personalizzato. I runtime personalizzati vengono configurati tramite un Dockerfile.

Puoi personalizzare Dockerfile e .dockerignore come preferisci. Infine, devi specificare runtime: custom anziché runtime: aspnetcore in app.yaml. Consulta Personalizzazione del runtime .NET per ulteriori informazioni.

Variabili di ambiente

L'ambiente di runtime imposta le seguenti variabili di ambiente:

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

Puoi impostare altre variabili di configurazione con appsettings.json.

Server metadati

Ogni istanza dell'applicazione può utilizzare Server metadati Compute Engine per informazioni sulle query sull'istanza, tra cui nome host, IP esterno indirizzo IP, ID istanza, metadati personalizzati e informazioni sull'account di servizio. Per app Engine non consente di impostare metadati personalizzati per ogni istanza, ma puoi Impostare metadati personalizzati a livello di progetto e leggerlo dalle tue istanze App Engine e Compute Engine.

Questa funzione di esempio utilizza il server di metadati per ottenere l'indirizzo IP esterno di l'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");