Runtime .NET

Runtime .NET adalah stack software yang bertanggung jawab untuk menginstal kode aplikasi dan dependensi Anda, lalu menjalankan aplikasi tersebut di lingkungan yang fleksibel.

.NET versi 6 dan yang lebih baru dibuat menggunakan buildpack, yang mengharuskan Anda memilih sistem operasi di file app.yaml. Misalnya, untuk menggunakan .NET 8, Anda harus menentukan Ubuntu 22 sebagai sistem operasi.

Untuk daftar lengkap versi .NET yang didukung, dan versi Ubuntu yang sesuai, lihat Jadwal dukungan runtime.

Memilih versi .NET

Versi runtime baru

Untuk .NET versi 6 dan yang lebih baru, Anda harus menyertakan setelan runtime_config dan operating_system dalam file app.yaml untuk menentukan sistem operasi.

Untuk menggunakan versi baru, Anda harus:

  • Memperbarui file project Anda.

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

    Untuk informasi selengkapnya, lihat Bermigrasi dari ASP.NET Core 3.1 ke 6.0.

  • Menginstal gcloud CLI versi 420.0.0 atau yang lebih baru. Anda dapat mengupdate alat CLI dengan menjalankan perintah gcloud components update. Untuk melihat versi yang diinstal, Anda dapat menjalankan perintah gcloud version.

  • Menentukan setelan operating_system di file app.yaml Anda:

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

Secara opsional, Anda dapat menentukan versi runtime dengan menyertakan setelan runtime_version dalam file app.yaml. Secara default, App Engine menggunakan versi LTS .NET terbaru yang tersedia jika setelan runtime_version tidak ditentukan. Misalnya, file app.yaml akan terlihat seperti berikut saat menetapkan .NET8 di Ubuntu 22:

    runtime: aspnetcore
    env: flex

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

Versi runtime sebelumnya

Untuk menarget versi .NET SDK tertentu, update file project Anda. Untuk informasi selengkapnya, lihat Bermigrasi dari ASP.NET Core 3.1 ke 6.0.

Jika ingin menggunakan GKE atau host Docker lainnya, Anda harus membuat Dockerfile yang menyalin kode aplikasi dan dependensi penginstalan Anda. Untuk informasi selengkapnya, lihat Runtime Kustom.

Men-deploy aplikasi App Engine Anda

Untuk men-deploy aplikasi .NET:

Jalankan perintah berikut dari direktori utama tempat aplikasi Anda berada:

v6 dan yang lebih baru

    gcloud app deploy

v3.1 dan versi sebelumnya

    dotnet restore
    dotnet publish -c Release
    gcloud app deploy

HTTPS dan proxy penerusan

App Engine menghentikan koneksi HTTPS di load balancer dan meneruskan permintaan ke aplikasi Anda. Aplikasi dapat memeriksa X-Forwarded-Proto untuk mengamati apakah protokol aslinya adalah HTTP atau HTTPS.

Beberapa aplikasi juga perlu memastikan alamat IP pengguna. Ini tersedia di header X-Forwarded-For standar.

Memperpanjang runtime

Runtime .NET lingkungan fleksibel dapat digunakan untuk membuat runtime kustom. Runtime kustom dikonfigurasi melalui Dockerfile.

Anda dapat menyesuaikan Dockerfile dan .dockerignore sesuai keinginan. Terakhir, Anda harus menentukan runtime: custom, bukan runtime: aspnetcore di app.yaml. Lihat Menyesuaikan Runtime .NET untuk informasi selengkapnya.

Variabel lingkungan

Variabel lingkungan berikut ditetapkan oleh lingkungan runtime:

Variabel lingkungan Deskripsi
GAE_INSTANCE Nama instance saat ini.
GAE_MEMORY_MB Jumlah memori yang tersedia untuk proses aplikasi.
GAE_SERVICE Nama layanan yang ditentukan dalam file app.yaml aplikasi Anda, atau jika tidak ada nama layanan yang ditentukan, nama akan ditetapkan ke default.
GAE_VERSION Label versi aplikasi saat ini.
GOOGLE_CLOUD_PROJECT Project ID yang terkait dengan aplikasi Anda, yang terlihat di konsol Google Cloud
PORT Port yang akan menerima permintaan HTTP.

Anda dapat menetapkan variabel konfigurasi tambahan dengan appsettings.json.

Server metadata

Setiap instance aplikasi Anda dapat menggunakan server metadata Compute Engine untuk mengkueri informasi tentang instance ini, termasuk nama host, alamat IP eksternal, ID instance, metadata kustom, dan informasi akun layanan. Dengan App Engine, Anda tidak dapat menetapkan metadata kustom untuk setiap instance, tetapi Anda dapat menetapkan metadata kustom tingkat project serta membacanya dari instance App Engine dan Compute Engine Anda.

Fungsi contoh ini menggunakan server metadata untuk mendapatkan alamat IP eksternal instance:

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