.NET 运行时是负责安装应用代码和依赖项,然后在柔性环境中运行该应用的软件栈。
.NET 版本
.NET 8 使用 buildpack 构建。如需查看受支持的 .NET 版本及其对应 Ubuntu 版本的完整列表,请参阅运行时支持时间表。
如需使用受支持的 .NET 版本,您必须:
使用要使用的 .NET 版本更新项目文件。
<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>
如需了解详情,请参阅从 ASP.NET Core 3.1 迁移到 6.0。
安装 gcloud CLI 420.0.0 版或更高版本。您可以通过运行 gcloud components update 命令来更新 CLI 工具。如需查看已安装的版本,您可以运行 gcloud version 命令。
在
app.yaml
文件中指定operating_system
设置:runtime: aspnetcore env: flex runtime_config: operating_system: "ubuntu22"
(可选)您可以通过在
app.yaml
文件中添加runtime_version
设置来指定运行时版本。默认情况下,如果未指定runtime_version
设置,App Engine 会使用可用的最新 LTS .NET 版本。例如,在 Ubuntu 22 上指定 .NET 8 时,app.yaml
文件如下所示:runtime: aspnetcore env: flex runtime_config: runtime_version: "8" operating_system: "ubuntu22"
过往运行时版本
如需以特定 .NET SDK 版本为目标,请更新项目文件。如需了解详情,请参阅从 ASP.NET Core 3.1 迁移到 6.0。
如果您要使用 GKE 或其他 Docker 主机,则需要创建一个 Dockerfile 来复制应用代码并安装依赖项。如需了解详情,请参阅自定义运行时。
如需部署 .NET 应用,请从应用所在的根目录运行以下命令:
dotnet restore
dotnet publish -c Release
gcloud app deploy
对其他 .NET 运行时的支持
如果您需要使用不受支持的 .NET 版本,可以创建自定义运行时,并选择具有所需 .NET 版本的有效基础映像。
对于 Google 提供的基础映像或 Docker .NET 基础映像,请参阅构建自定义运行时。
HTTPS 和转发代理
App Engine 会在负载均衡器上终止 HTTPS 连接,并将请求转发给应用。应用可以检查 X-Forwarded-Proto
来获悉原始协议是 HTTP 还是 HTTPS。
某些应用还需要确定用户的 IP 地址。该地址可在标准 X-Forwarded-For
标头中获取。
扩展运行时
柔性环境 .NET 运行时可用于创建自定义运行时。
自定义运行时是通过 Dockerfile
配置的。
您可以根据需要自定义 Dockerfile
和 .dockerignore
。最后,您将需要在 app.yaml
文件中指定 runtime: custom
,而不是 runtime: aspnetcore
。如需了解详情,请参阅自定义 .NET 运行时。
环境变量
以下环境变量由运行时环境设置:
环境变量 | 说明 |
---|---|
GAE_INSTANCE |
当前实例的名称。 |
GAE_MEMORY_MB |
可供应用进程使用的内存量。 |
GAE_SERVICE |
在应用的 app.yaml 文件中指定的服务名称,如果未指定服务名称,则设置为 default 。 |
GAE_VERSION |
当前应用的版本标签。 |
GOOGLE_CLOUD_PROJECT |
与您的应用关联的项目 ID,可在 Google Cloud 控制台中查看 |
PORT |
将接收 HTTP 请求的端口。 |
您可以使用 appsettings.json
设置其他配置变量。
元数据服务器
应用的每个实例都可以使用 Compute Engine 元数据服务器来查询有关实例的信息,包括实例的主机名、外部 IP 地址、实例 ID、自定义元数据和服务账号信息。App Engine 不允许为每个实例设置自定义元数据,但您可以设置项目级的自定义元数据,并从 App Engine 和 Compute Engine 实例中读取这些元数据。
此示例函数使用元数据服务器来获取实例的外部 IP 地址: