Die .NET-Laufzeit

Die .NET-Laufzeit ist das Softwarepaket, das für die Installation Ihres Anwendungscodes und der Abhängigkeiten sowie für die Ausführung dieser Anwendung in der flexiblen Umgebung verantwortlich ist.

Die .NET-Versionen 6 und höher werden mit Buildpacks erstellt. Dazu müssen Sie in Ihrer app.yaml-Datei ein Betriebssystem auswählen. Wenn Sie beispielsweise .NET 8 verwenden möchten, müssen Sie Ubuntu 22 als Betriebssystem angeben.

Eine vollständige Liste der unterstützten .NET-Versionen und der zugehörigen Ubuntu-Versionen finden Sie im Zeitplan für den Support der Laufzeit.

.NET-Version wählen

Neue Laufzeitversionen

Für .NET Version 6 und höher müssen Sie die Einstellungen runtime_config und operating_system in die Datei app.yaml einfügen, um ein Betriebssystem anzugeben.

Damit Sie die neue Version verwenden können, müssen Sie:

  • Ihre Projektdatei aktualisieren.

    <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>
    

    Weitere Informationen finden Sie unter Von ASP.NET Core 3.1 zu 6.0 migrieren.

  • Installieren Sie die CLI-Version 420.0.0 oder höher. Um Ihre Befehlszeilentools zu aktualisieren, führen Sie den Befehl gcloud components update aus. Zum Aufrufen der installierten Version führen Sie den Befehl gcloud version aus.

  • Geben Sie die operating_system-Einstellung in der app.yaml-Datei an:

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

Optional: Sie können eine Laufzeitversion angeben. Nehmen Sie dazu die Einstellung runtime_version in die Datei app.yaml auf. Standardmäßig verwendet App Engine die neueste verfügbare LTS .NET-Version, wenn die Einstellung runtime_version nicht angegeben ist. Die Datei app.yaml sieht beispielsweise so aus, wenn Sie .NET8 unter Ubuntu 22 angeben:

    runtime: aspnetcore
    env: flex

    runtime_config:
        runtime_version: "8"
        operating_system: "ubuntu22"

Vorherige Laufzeitversionen

Wenn Sie eine bestimmte .NET SDK-Version als Ziel verwenden möchten, aktualisieren Sie Ihre Projektdatei. Weitere Informationen finden Sie unter Von ASP.NET Core 3.1 zu 6.0 migrieren.

Wenn Sie GKE oder andere Docker-Hosts verwenden möchten, müssen Sie ein Dockerfile erstellen, das Ihren Anwendungscode kopiert und Abhängigkeiten installiert. Weitere Informationen finden Sie unter Benutzerdefinierte Laufzeiten.

App Engine-Anwendung bereitstellen

So stellen Sie Ihre .NET-App bereit:

Führen Sie folgende Befehle in dem Stammverzeichnis aus, in dem sich Ihre Anwendung befindet:

v6 und höher

    gcloud app deploy

v3.1 und älter

    dotnet restore
    dotnet publish -c Release
    gcloud app deploy

HTTPS- und Weiterleitungs-Proxys

App Engine beendet die HTTPS-Verbindung am Load-Balancer und leitet die Anfrage an Ihre Anwendung weiter. Anhand von X-Forwarded-Proto können Anwendungen feststellen, ob die ursprüngliche Anfrage über HTTP oder HTTPS erfolgt ist.

Einige Anwendungen müssen auch die IP-Adresse des Nutzers ermitteln. Diese Funktion ist im Standard-Header X-Forwarded-For verfügbar.

Laufzeit erweitern

Die .NET-Laufzeit für flexible Umgebungen kann zum Erstellen einer benutzerdefinierten Laufzeit verwendet werden. Benutzerdefinierte Laufzeiten werden über ein Dockerfile konfiguriert.

Sie können das Dockerfile und .dockerignore nach Bedarf anpassen. Schließlich müssen Sie runtime: custom anstelle von runtime: aspnetcore in app.yaml angeben. Weitere Informationen finden Sie unter .NET-Laufzeit anpassen.

Umgebungsvariablen

Die folgenden Umgebungsvariablen werden durch die Laufzeitumgebung festgelegt:

Umgebungsvariable Beschreibung
GAE_INSTANCE Der Name der aktuellen Instanz
GAE_MEMORY_MB Die Größe des für den Anwendungsprozess verfügbaren Speichers
GAE_SERVICE Der in der Datei app.yaml Ihrer Anwendung angegebene Dienstname. Wenn kein Dienstname angegeben ist, wird als Wert default festgelegt.
GAE_VERSION Das Versionslabel der aktuellen Anwendung
GOOGLE_CLOUD_PROJECT Die mit Ihrer Anwendung verknüpfte Projekt-ID, die in der Google Cloud Console angezeigt wird
PORT Der Port, der HTTP-Anfragen empfängt

Sie können mit appsettings.json weitere Konfigurationsvariablen festlegen.

Metadatenserver

Jede Instanz Ihrer Anwendung kann den Compute Engine-Metadatenserver verwenden, um Informationen über die Instanz abzufragen, einschließlich ihres Hostnamens, ihrer externen IP-Adresse, Instanz-ID, benutzerdefinierten Metadaten und Dienstkontoinformationen. Sie können in App Engine nicht für jede einzelne Instanz benutzerdefinierte Metadaten festlegen. Sie haben aber die Möglichkeit, projektweite benutzerdefinierte Metadaten anzugeben und aus den App Engine- und Compute Engine-Instanzen zu lesen.

Diese Beispielfunktion ruft die externe IP-Adresse der Instanz über den Metadatenserver ab:

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");