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.

Versi .NET

.NET 8 dibuat menggunakan buildpacks. Untuk mengetahui daftar lengkap versi .NET yang didukung, dan versi Ubuntu yang sesuai, lihat Jadwal dukungan runtime.

Untuk menggunakan versi .NET yang didukung, Anda harus:

  • Update file project Anda dengan versi .NET yang ingin Anda gunakan.

    <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 .NET LTS terbaru yang tersedia jika setelan runtime_version tidak ditentukan. Misalnya, file app.yaml terlihat seperti berikut saat menentukan .NET 8 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.

Untuk men-deploy aplikasi .NET, jalankan perintah berikut dari direktori root tempat aplikasi Anda berada:

    dotnet restore
    dotnet publish -c Release
    gcloud app deploy

Dukungan untuk runtime .NET lainnya

Jika perlu menggunakan versi .NET yang tidak didukung, Anda dapat membuat runtime kustom dan memilih image dasar yang valid dengan versi .NET yang Anda butuhkan.

Untuk image dasar yang disediakan Google atau image dasar .NET Docker, lihat Mem-build runtime kustom.

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