Azure 应用服务中的环境变量和应用设置

备注

从 2024 年 6 月 1 日开始,新创建的应用服务应用可以生成使用命名约定 <app-name>-<random-hash>.<region>.chinacloudsites.cn 的唯一默认主机名。 现有应用名称保持不变。 例如:

myapp-ds27dh7271aah175.chinanorth3-01.chinacloudsites.cn

Azure 应用服务中,某些设置作为环境变量可用于部署或运行时环境。 手动将其设置为 应用设置时,可以自定义其中一些设置。 此参考显示可以使用或自定义的变量。

应用环境

以下环境变量通常与应用环境相关。

设置名 说明
WEBSITE_SITE_NAME 只读。 应用名称。
WEBSITE_RESOURCE_GROUP 只读。 包含应用资源的 Azure 资源组名称。
WEBSITE_OWNER_NAME 只读。 包含拥有应用、资源组和 webspace 的 Azure 订阅 ID。
REGION_NAME 只读。 应用的区域名称。
WEBSITE_PLATFORM_VERSION 只读。 应用服务平台版本。
HOME 只读。 主目录的路径(例如,Windows 的 D:\home)。
SERVER_PORT 只读。 应用应侦听的端口。
WEBSITE_WARMUP_PATH 执行 ping 操作以预热应用的相对路径,以左斜线开头。 默认为 /robots933456.txt

每当平台启动容器时,业务流程协调程序就会针对此终结点发出重复的请求。 平台会将来自此终结点的任何响应视为容器准备就绪的指示。 当平台将容器视为准备就绪时,它将开始将有机流量转发到新启动的容器。 除非 WEBSITE_WARMUP_STATUSES 已配置,否则平台会将来自此终结点的容器的任何响应(甚至错误代码(如 404 或 502)视为容器已准备就绪的指示。

此应用设置不会更改 Always On 使用的路径。
WEBSITE_WARMUP_STATUSES 相应 HTTP 状态代码的逗号分隔列表,这些代码在平台对新启动的容器执行预热 ping 操作时表示成功。 与 WEBSITE_WARMUP_PATH 一起使用。

默认情况下,任何状态代码都被视为表明容器已准备好用于自然流量。 在将有机流量路由到容器之前,可以使用此应用来要求特定的响应。

示例为 200,202。 如果针对应用的已配置预热路径执行 ping 操作时接收到包含 200 或 202 状态代码的响应,自然流量就会被路由到容器。 如果收到列表中没有的状态代码(例如 502),平台将继续发送 ping 请求,直到收到 200 或 202 为止,或者直到达到容器启动超时限制。 (请参阅 WEBSITES_CONTAINER_START_TIME_LIMIT 下表的后面部分。

如果容器未使用列表中的 HTTP 状态代码进行响应,平台最终会失败启动尝试并重试,这会导致 503 错误。
WEBSITE_COMPUTE_MODE 只读。 指定应用是在专用(Dedicated)还是共享()虚拟机(SharedVM)上运行。
WEBSITE_SKU 只读。 应用的定价层。 可能值为 FreeSharedBasicStandard
SITE_BITNESS 只读。 显示应用是 32 位(x86)还是 64 位(AMD64)。
WEBSITE_HOSTNAME 只读。 应用的主主机名。 此设置不考虑自定义主机名。
WEBSITE_VOLUME_TYPE 只读。 显示当前使用的存储卷类型。
WEBSITE_NPM_DEFAULT_VERSION 应用使用的默认 npm 版本。
WEBSOCKET_CONCURRENT_REQUEST_LIMIT 只读。 并发 WebSocket 请求的限制。 对于 Standard 层及更高层级,该值为 -1,但仍然存在基于 VM 大小的每 VM 限制。 请参阅 跨 VM 数值限制
WEBSITE_PRIVATE_EXTENSIONS 设置为 0 可禁用专用站点扩展。
WEBSITE_TIME_ZONE 默认情况下,应用的时区始终为 UTC。 可以将它更改为 默认时区中列出的任何有效值。 如果未识别指定的值,应用将使用 UTC。

示例: Atlantic Standard Time
WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG 槽交换之后,应用可能会遇到意外重启。 原因是交换后,主机名绑定配置不同步,这本身不会导致重启。 但是,某些基础存储事件(如存储卷故障转移)可能会检测到这些差异,并强制所有工作进程重启。

若要最大程度地减少这些类型的重启,请在所有槽上将应用设置值设置为 1。 (默认值为 0.)但是,如果你运行的是 Windows Communication Foundation 应用程序,请不要设置此值。 有关详细信息,请参阅排查交换问题
WEBSITE_PROACTIVE_AUTOHEAL_ENABLED 默认情况下,当 VM 实例使用 90% 以上的已分配内存超过 30 秒时,或者过去两分钟内请求总数的 80% 用时超过 200 秒时,便会主动修正该 VM 实例。 如果 VM 实例触发这些规则之一,则恢复过程是实例的重叠重启。

设置为 false 可禁用此恢复行为。 默认为 true

有关详细信息,请参阅 “主动自动愈合简介 ”博客文章。
WEBSITE_PROACTIVE_CRASHMONITORING_ENABLED 每当应用 VM 实例上的 w3wp.exe 进程因未经处理的异常在 24 小时内发生三次以上崩溃时,调试器进程将附加到该实例上的主工作进程。 当工作进程再次崩溃时,调试器进程会收集内存转储。 然后分析此内存转储,并在应用服务日志中记录导致崩溃的线程的调用堆栈。

设置为 false 可禁用此自动监视行为。 默认为 true

有关详细信息,请参阅 Azure 应用服务博客文章中的主动崩溃监视
WEBSITE_DAAS_STORAGE_SASURI 在故障监视(主动或手动)期间,默认情况下会删除内存转储。 若要将内存转储保存到存储 Blob 容器,请指定共享访问签名 (SAS) URI。
WEBSITE_CRASHMONITORING_ENABLED 设置为可手动true启用故障监视。 还必须设置 WEBSITE_DAAS_STORAGE_SASURIWEBSITE_CRASHMONITORING_SETTINGS。 默认为 false

如果启用远程调试,则此设置不起作用。 此外,如果将此设置设置为 true,则会禁用主动故障监视
WEBSITE_CRASHMONITORING_SETTINGS 采用以下格式的 JSON:{"StartTimeUtc": "2020-02-10T08:21","MaxHours": "<elapsed-hours-from-StartTimeUtc>","MaxDumpCount": "<max-number-of-crash-dumps>"}。 如果指定了 ,则需要配置WEBSITE_CRASHMONITORING_ENABLED。 若要记录调用堆栈而不将故障转储保存到存储帐户,请在 JSON 中添加 ,"UseStorageAccount":"false"
REMOTEDEBUGGINGVERSION 远程调试版本。
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING 默认情况下,应用服务会在应用创建中创建共享存储。 若要改为使用自定义存储帐户,请设置为存储帐户的连接字符串。 有关函数,请参阅 Azure Functions 的应用设置参考

示例: DefaultEndpointsProtocol=https;AccountName=<name>;AccountKey=<key>
WEBSITE_CONTENTSHARE 通过 WEBSITE_CONTENTAZUREFILECONNECTIONSTRING 指定自定义存储帐户时,应用服务会为应用创建该存储帐户中的文件共享。 若要使用自定义名称,请将此变量设置为所需的名称。 如果具有指定名称的文件共享不存在,应用服务会为你创建一个。

示例: myapp123
WEBSITE_SCM_ALWAYS_ON_ENABLED 只读。 显示 Always On 是已启用 (1) 还是未启用 (0)。
WEBSITE_SCM_SEPARATE_STATUS 只读。 显示 Kudu 应用是在单独的进程中运行 (1) 还是不在单独的进程中运行 (0)。
WEBSITE_DNS_ATTEMPTS 尝试解析名称的次数。
WEBSITE_DNS_TIMEOUT 等待名称解析的秒数。
WEBSITES_CONTAINER_START_TIME_LIMIT 平台等待容器在启动时准备就绪的时间(以秒为单位)。 此设置适用于在 Linux 上运行的应用服务上的基于代码的应用和基于容器的应用。 默认值是 230

当容器启动时,会针对容器执行重复的 ping 操作,以评估其处理自然流量的准备状态。 (见 WEBSITE_WARMUP_PATHWEBSITE_WARMUP_STATUSES。)持续执行这些 ping 操作,直到收到成功的响应或达到时间上限。 如果容器在配置的超时时间内未准备就绪,则平台将失败启动尝试并重试,这会导致 503 错误。

对于适用于 Windows 容器的应用服务,默认的开始时间限制为 10 mins。 可以通过指定时间跨度来更改开始时间限制。 例如, 00:05:00 指示 5 分钟。

变量前缀

下表显示了应用服务用于各种目的的环境变量前缀。

设置名 说明
APPSETTING_ 表示客户在应用配置中将变量设置为应用设置。 它作为应用设置注入到 .NET 应用中。
MAINSITE_ 表示变量特定于应用本身。
SCMSITE_ 表示变量特定于 Kudu 应用。
SQLCONNSTR_ 应用配置中的 SQL Server 连接字符串。 它作为连接字符串注入到 .NET 应用中。
SQLAZURECONNSTR_ 应用配置中的 Azure SQL 数据库连接字符串。 它作为连接字符串注入到 .NET 应用中。
POSTGRESQLCONNSTR_ 应用配置中的 PostgreSQL 连接字符串。 它作为连接字符串注入到 .NET 应用中。
CUSTOMCONNSTR_ 应用配置中的自定义连接字符串。 它作为连接字符串注入到 .NET 应用中。
MYSQLCONNSTR_ 应用配置中的 MySQL 数据库连接字符串。 它作为连接字符串注入到 .NET 应用中。
AZUREFILESSTORAGE_ Azure 文件存储中自定义容器的自定义共享连接字符串。
AZUREBLOBSTORAGE_ Azure Blob 存储中自定义容器的自定义存储帐户连接字符串。
NOTIFICATIONHUBCONNSTR_ Azure 通知中心内通知中心的连接字符串。
SERVICEBUSCONNSTR_ Azure 服务总线实例的连接字符串。
EVENTHUBCONNSTR_ Azure 事件中心内事件中心的连接字符串。
DOCDBCONNSTR_ Azure Cosmos DB 内数据库的连接字符串。
REDISCACHECONNSTR_ Azure Cache for Redis 内缓存的连接字符串。
FILESHARESTORAGE_ 自定义文件共享的连接字符串。

部署

以下环境变量与应用部署相关。 有关与应用服务生成自动化相关的变量,请参阅本文后面的 生成自动化

设置名 说明
DEPLOYMENT_BRANCH 对于 本地 Git云 Git 部署(如 GitHub),请设置为 Azure 中您想要部署的分支。 该名称默认为 master
WEBSITE_RUN_FROM_PACKAGE 设置为 1 从本地 ZIP 包运行应用,或设置为外部 URL 以从远程 ZIP 包运行应用。 有关详细信息,请参阅直接从 ZIP 包运行 Azure 应用服务中的应用
WEBSITE_USE_ZIP 已弃用。 使用 WEBSITE_RUN_FROM_PACKAGE
WEBSITE_RUN_FROM_ZIP 已弃用。 使用 WEBSITE_RUN_FROM_PACKAGE
SCM_MAX_ZIP_PACKAGE_COUNT 应用保留通过 ZIP 部署上传的最近五个 ZIP 文件。 通过将应用设置更改为其他数字,可以保留更多或更少。
WEBSITE_WEBDEPLOY_USE_SCM 设置为 false,即可使 Web 部署工具停止使用 Kudu 部署引擎。 默认为 true。 若要使用 Visual Studio(Web 部署/MSDeploy)部署到 Linux 应用,请将其设置为 false
MSDEPLOY_RENAME_LOCKED_FILES 如果 Web 部署工具部署期间无法复制 DLL,设置为 1 即可尝试重命名 DLL。 如果将 WEBSITE_WEBDEPLOY_USE_SCM 设置为 false,则此设置不适用。
WEBSITE_DISABLE_SCM_SEPARATION 默认情况下,主应用和 Kudu 应用在不同的沙盒中运行。 停止应用时,Kudu 应用仍在运行,可以继续使用 Git 部署和 MSDeploy。 每个应用都有自己的应用 ID。 关闭此分隔(设置为 true)是不再完全受支持的旧模式。
WEBSITE_ENABLE_SYNC_UPDATE_SITE 设置为 1 可确保在返回之前,REST API 对更新 sitesiteconfig 的调用完全应用到所有实例。 如果使用 Azure 资源管理器模板(ARM 模板)进行部署,则默认为 1,以避免与后续资源管理器调用出现争用。
WEBSITE_START_SCM_ON_SITE_CREATION 在 ARM 模板部署中,在 ARM 模板中设置为 1,以在应用创建过程中预先启动 Kudu 应用。
WEBSITE_START_SCM_WITH_PRELOAD 对于 Linux 应用,设置为 true,以在对其 URL 执行 ping 操作来启用 Always On 时强制预加载 Kudu 应用。 默认为 false。 对于 Windows 应用,始终预加载 Kudu 应用。

生成自动化

Kudu 生成配置适用于本机 Windows 应用,用于控制基于 Git(或基于 ZIP)的部署行为。

设置名 说明
SCM_BUILD_ARGS 在 msbuild 命令行的末尾添加内容,以替代默认命令行的任何原有部分。

例如,若要执行干净生成:-t:Clean;Compile
SCM_SCRIPT_GENERATOR_ARGS Kudu 使用 azure site deploymentscript 命令 生成部署脚本。 它会自动检测语言框架类型,并确定要向其传递命令的参数。 此设置将替代自动生成的参数。

例如,若要将存储库视为纯内容文件: --basic -p <folder-to-deploy>.
SCM_TRACE_LEVEL 生成跟踪级别。 默认为 1。 设置为更高的值(最高为 4)可进行更多跟踪。
SCM_COMMAND_IDLE_TIMEOUT 生成过程运行的每条命令要等待的超时时间(以秒为单位),超过该时间后便会生成输出。 此后,该命令被视为空闲并终止。 默认为 60(一分钟)。

在 Azure 中,还有一个在 230 秒后断开客户端连接的常规空闲请求超时。 但是,该命令在该之后继续在服务器端运行。
SCM_LOGSTREAM_TIMEOUT 停止日志流式处理前处于非活动状态的超时时间(以秒为单位)。 默认为 1800(30 分钟)。
SCM_SITEEXTENSIONS_FEED_URL 站点扩展库的 URL。 默认为 https://www.nuget.org/api/v2/。 旧源的 URL 为 http://www.siteextensions.net/api/v2/
SCM_USE_LIBGIT2SHARP_REPOSITORY 设置为 0 可使用 git.exe(而不是 libgit2sharp)进行 Git 操作。
WEBSITE_LOAD_USER_PROFILE 为了防止生成自动化 ASP.NET 期间(例如 Git 部署期间)出现错误 The specified user does not have a valid profile,请将此变量设置为 1 以在生成环境中加载完整的用户配置文件。 此设置仅在 WEBSITE_COMPUTE_MODEDedicated 时适用。
WEBSITE_SCM_IDLE_TIMEOUT_IN_MINUTES 源代码管理器 (Kudu) 站点的超时(以分钟为单位)。 默认为 20
SCM_DO_BUILD_DURING_DEPLOYMENT 使用 ZIP 部署时,部署引擎假定 ZIP 文件已准备好按原样运行,并且不会运行任何生成自动化。 若要启用与 Git 部署中相同的生成自动化,请设置为 true

特定于资源的设置

本部分演示每种受支持语言框架的可配置运行时设置。 在部署时进行生成自动化期间还可以使用更多设置。

设置名 说明
PORT 只读。 对于 Linux 应用,为 .NET 运行时在容器中侦听的端口。
WEBSITE_ROLE_INSTANCE_ID 只读。 当前实例的 ID。
HOME 只读。 指向共享存储的目录 (/home)。
DUMP_DIR 只读。 故障转储的目录 (/home/logs/dumps)。
APP_SVC_RUN_FROM_COPY 仅限于 Linux 应用。 默认情况下,应用在 /home/site/wwwroot 中运行,这是所有横向扩展实例的共享目录。 将此变量设置为 true,以将应用复制到容器中的本地目录并在该目录中运行它。 使用此选项时,请确保不要对任何引用 /home/site/wwwroot进行硬编码。 请改为使用相对于 /home/site/wwwroot 的路径。
MACHINEKEY_Decryption 对于本机 Windows 应用或容器化 Windows 应用,此变量将注入应用环境或容器,以启用 ASP.NET 加密例程。 (请参阅 machineKey 元素。)若要覆盖默认值decryption,可以将其配置为应用服务应用设置,或者直接在machineKey文件的Web.config元素中设置该值。
MACHINEKEY_DecryptionKey 对于本机 Windows 应用或容器化 Windows 应用,此变量将注入应用环境或容器,以启用 ASP.NET 加密例程。 (请参阅 machineKey 元素。)若要覆盖自动生成的decryptionKey值,可以将其配置为应用服务应用设置,或者直接在machineKey文件的Web.config元素中设置该值。
MACHINEKEY_Validation 对于本机 Windows 应用或容器化 Windows 应用,此变量将注入应用环境或容器,以启用 ASP.NET 加密例程。 (请参阅 machineKey 元素。)若要覆盖默认值validation,可以将其配置为应用服务应用设置,或者直接在machineKey文件的Web.config元素中设置该值。
MACHINEKEY_ValidationKey 对于本机 Windows 应用或容器化 Windows 应用,此变量将注入应用环境或容器,以启用 ASP.NET 加密例程。 (请参阅 machineKey 元素。)若要覆盖自动生成的validationKey值,可以将其配置为应用服务应用设置,或者直接在machineKey文件的Web.config元素中设置该值。

域和 DNS

设置名 说明
WEBSITE_DNS_SERVER 用于传出连接的主 DNS 服务器的 IP 地址(例如后端服务)。 应用服务的默认 DNS 服务器是 Azure DNS,其 IP 地址为 168.63.129.16。 如果应用使用 虚拟网络集成 或位于 应用服务环境中,则它默认从虚拟网络继承 DNS 服务器配置。

示例: 10.0.0.1
WEBSITE_DNS_ALT_SERVER 备用 DNS 服务器的 IP 地址用于传出连接。 请参阅 WEBSITE_DNS_SERVER
WEBSITE_ENABLE_DNS_CACHE 允许缓存成功的 DNS 解析。 默认情况下,每隔 4.5 分钟刷新过期的 DNS 缓存条目(除了现有缓存)。

TLS/SSL

有关详细信息,请参阅在 Azure 应用服务的代码中使用 TLS/SSL 证书

设置名 说明
WEBSITE_LOAD_CERTIFICATES 要加载到代码中的证书的指纹值,用逗号分隔。 或者使用*允许在代码中加载所有证书。 只能加载添加到应用中的证书
WEBSITE_PRIVATE_CERTS_PATH 只读。 Windows 容器中已加载专用证书的路径。
WEBSITE_PUBLIC_CERTS_PATH 只读。 Windows 容器中已加载公共证书的路径。
WEBSITE_INTERMEDIATE_CERTS_PATH 只读。 Windows 容器中已加载中间证书的路径。
WEBSITE_ROOT_CERTS_PATH 只读。 Windows 容器中已加载根证书的路径。

部署槽

有关部署槽位的详细信息,请参阅设置 Azure 应用服务中的过渡环境

设置名 说明
WEBSITE_OVERRIDE_STICKY_EXTENSION_VERSIONS 默认情况下,站点扩展的版本都特定于每个槽。 此默认值可以防止由于交换后更改扩展版本导致的意外应用程序行为。 如果还想要交换扩展版本,请在所有槽上设置为 0
WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS 将特定设置指定为默认为粘滞或不可交换。 默认为 true。 将此值设置为false0,以使所有部署槽变为可交换。 对于特定设置类型,没有精细的控制。
WEBSITE_SWAP_WARMUP_PING_PATH 执行 ping 操作以在交换中预热目标槽的路径,以斜杠开头。 默认值为 /,它通过 HTTP 对根路径执行 ping 操作。

示例: /statuscheck
WEBSITE_SWAP_WARMUP_PING_STATUSES 交换期间,预热操作的有效 HTTP 响应代码。 如果返回的状态代码不在列表中,将停止进行预热和交换操作。 默认情况下,所有响应代码都是有效的。

示例: 200,202
WEBSITE_SLOT_NUMBER_OF_TIMEOUTS_BEFORE_RESTART 槽交换期间的最大超时次数,超过该次数后将在特定 VM 实例上强制重启站点。 默认为 3
WEBSITE_SLOT_MAX_NUMBER_OF_TIMEOUTS 槽交换期间,在放弃之前,单个 URL 发出的最大超时请求数。 默认为 5
WEBSITE_SKIP_ALL_BINDINGS_IN_APPHOST_CONFIG 设置为 true1 以跳过 applicationHost.config 中的所有绑定。 默认为 false。 如果应用由于 applicationHost.config 更新为槽的交换主机名而触发重启,请将此变量设置为 true,以免重启此类型。 如果运行的是 Windows Communication Foundation 应用,请不要设置此变量。

自定义容器

有关自定义容器的详细信息,请参阅在 Azure 中运行自定义容器

设置名 说明
WEBSITES_ENABLE_APP_SERVICE_STORAGE 对于 Linux 容器,如果未指定此应用程序设置,则默认情况下目录 /home 将在缩放实例之间共享。 可以将它设置为 false 以禁用共享。

对于 Windows 容器:设置为 true 以允许跨缩放实例共享 c:\home 目录。 Windows 容器的默认值为 true
WEBSITES_CONTAINER_STOP_TIME_LIMIT 等待容器正常终止的时间量(以秒为单位)。 默认为 5。 可以增加到最大值 120
DOCKER_REGISTRY_SERVER_URL 在应用服务中运行自定义容器时注册表服务器的 URL。 安全起见,此变量不会传递到容器。

示例: https://<server-name>.azurecr.cn
DOCKER_REGISTRY_SERVER_USERNAME DOCKER_REGISTRY_SERVER_URL 上通过注册表服务器进行身份验证的用户名。 安全起见,此变量不会传递到容器。
DOCKER_REGISTRY_SERVER_PASSWORD DOCKER_REGISTRY_SERVER_URL 上通过注册表服务器进行身份验证的密码。 安全起见,此变量不会传递到容器。
DOCKER_ENABLE_CI 设置为 true 即可启用自定义容器的持续部署。 对于自定义容器,默认值为 false
WEBSITE_PULL_IMAGE_OVER_VNET 连接虚拟网络中或本地的注册表并从中拉取。 应用需要通过虚拟网络集成功能连接到虚拟网络。 对于具有专用终结点的 Azure 容器注册表,还需要此设置。
WEBSITES_WEB_CONTAINER_NAME 在 Docker Compose 应用中,仅有一个容器可以访问 Internet。 设置为配置文件中定义的容器的名称,以替代默认容器选择。 默认情况下,可访问 Internet 的容器是第一个定义端口 80 或 8080 的容器。 如果未找到此类容器,则默认值为配置文件中定义的第一个容器。
WEBSITES_PORT 对于自定义容器,则为将请求路由到应用服务容器上的自定义端口号。 默认情况下,应用服务尝试对端口 80 和 8080 进行自动端口检测。 此设置不会作为环境变量注入到容器中。
WEBSITE_CPU_CORES_LIMIT 默认情况下,Windows 容器将运行,其中包含所选定价层的所有可用内核。 若要减少核心数,请将限制设置为所需核心数。 有关详细信息,请参阅自定义计算内核数量
WEBSITE_MEMORY_LIMIT_MB 默认情况下,在应用服务中部署的所有 Windows 容器都配置了内存限制,具体取决于应用服务计划的层。 设置为所需的内存限制(以兆字节为单位)。 同一计划中跨应用累积此设置的总和不得超过所选定价层允许的金额。 有关详细信息,请参阅自定义容器内存

扩展

设置名 说明
WEBSITE_INSTANCE_ID 只读。 应用扩展到多个实例时,当前 VM 实例的唯一 ID。
WEBSITE_IIS_SITE_NAME 已弃用。 使用 WEBSITE_INSTANCE_ID
WEBSITE_DISABLE_OVERLAPPED_RECYCLING 重叠回收可确保在关闭应用的当前 VM 实例之前启动新的 VM 实例。 在某些情况下,它可能会导致文件锁定问题。 可以设置为 1 来尝试将其关闭。
WEBSITE_DISABLE_CROSS_STAMP_SCALE 默认情况下,如果应用使用 Azure 文件或 Docker 容器,则可以扩展交叉标记。 设置为 1 或将 true 在应用的区域内禁用交叉标记缩放。 默认为 0。 将 WEBSITES_ENABLE_APP_SERVICE_STORAGE 设置为 true1 的自定义 Docker 容器无法缩放交叉标记,因为其内容并未完全封装在 Docker 容器中。

日志记录

设置名 说明
WEBSITE_HTTPLOGGING_ENABLED 只读。 显示本机 Windows 应用的 Web 服务器日志记录是否已启用(1)或未启用(0)。
WEBSITE_HTTPLOGGING_RETENTION_DAYS 如果为本机 Windows 或 Linux 应用启用了 Web 服务器日志,则 Web 服务器日志的保留期(以天为单位)。

示例: 10
WEBSITE_HTTPLOGGING_CONTAINER_URL Blob 存储容器的 SAS URL,用于存储 Windows 原生应用的 Web 服务器日志(如果已启用 Web 服务器日志)。 如果未设置,Web 服务器日志将存储在应用的文件系统(默认共享存储) 中。
DIAGNOSTICS_AZUREBLOBRETENTIONINDAYS 如果启用了应用程序日志,则本机 Windows 应用的应用程序日志保留期(以天为单位)。

示例: 10
DIAGNOSTICS_AZUREBLOBCONTAINERSASURL Blob 存储容器的 SAS URL,用于存储 Windows 原生应用的应用程序日志(如果已启用应用程序日志)。
APPSERVICEAPPLOGS_TRACE_LEVEL AppServiceAppLogs 日志类型要交付到 Log Analytics 的最低日志级别。
DIAGNOSTICS_LASTRESORTFILE 要创建的文件名或日志目录的相对路径,用于记录内部错误以便对侦听器进行故障排除。 默认为 logging-errors.txt
DIAGNOSTICS_LOGGINGSETTINGSFILE 相对于 D:\home/home 的日志设置文件的路径。 默认为 site\diagnostics\settings.json
DIAGNOSTICS_TEXTTRACELOGDIRECTORY 相对于应用根目录(D:\home\site\wwwroot/home/site/wwwroot)的日志文件夹。

示例: ..\..\LogFiles\Application
DIAGNOSTICS_TEXTTRACEMAXLOGFILESIZEBYTES 日志文件的最大大小(以字节为单位)。 默认为 131072 (128 KB)。
DIAGNOSTICS_TEXTTRACEMAXLOGFOLDERSIZEBYTES 日志文件夹的最大大小(以字节为单位)。 默认为 1048576 (1 MB)。
DIAGNOSTICS_TEXTTRACEMAXNUMLOGFILES 要保留的日志文件的最大数量。 默认为 20
DIAGNOSTICS_TEXTTRACETURNOFFPERIOD 超时(以毫秒为单位),以保持应用程序日志记录处于启用状态。 默认值为 43200000(12 小时)。
WEBSITE_LOG_BUFFERING 日志缓冲默认为已启用状态。 设置为 0 可将其禁用。
WEBSITE_ENABLE_PERF_MODE 对于原生 Windows 应用,设置为 TRUE 可关闭 10 秒钟内返回的成功请求的 IIS 日志条目。 这是通过删除扩展日志记录执行性能基准测试的一种快速方法。

性能计数器

以下是所谓的“伪”环境变量,枚举时并不存在,但如果逐个查找,它们会返回其值。 该值是动态的,每次查找时都可能发生变化。

设置名 说明
WEBSITE_COUNTERS_ASPNET 包含 ASP.NET 性能计数器的 JSON 对象。
WEBSITE_COUNTERS_APP 包含沙盒计数器的 JSON 对象。
WEBSITE_COUNTERS_CLR 包含公共语言运行时计数器的 JSON 对象。
WEBSITE_COUNTERS_ALL 包含其他三个变量组合的 JSON 对象。

缓存

设置名 说明
WEBSITE_LOCAL_CACHE_OPTION 是否启用本地缓存。 可用选项包括:

- Default:继承标记级全局设置。
- Always:对应用启用。
- OnStorageUnavailability
- Disabled:禁用此应用。
WEBSITE_LOCAL_CACHE_READWRITE_OPTION 本地缓存的读/写选项。 可用选项包括:

- ReadOnly:缓存为只读。
- WriteButDiscardChanges:允许写入本地缓存,但放弃本地所做的更改。
WEBSITE_LOCAL_CACHE_SIZEINMB 本地缓存的大小(以兆字节为单位)。 默认值为 1000 (1 GB)。
WEBSITE_LOCALCACHE_READY 指示应用是否使用本地缓存的只读标志。
WEBSITE_DYNAMIC_CACHE 由于网络文件共享的性质允许访问多个实例,动态缓存通过在实例本地缓存最近访问的文件来提高性能。 修改文件时,缓存将失效。 缓存位置为 %SYSTEMDRIVE%\local\DynamicCache. (适用相同的 %SYSTEMDRIVE%\local 配额。)

若要启用完整内容缓存,请设置为 1,其中包括文件内容和目录/文件元数据(时间戳、大小、目录内容)。 若要节省本地磁盘的使用,请设置为 2 仅缓存目录/文件元数据(时间戳、大小、目录内容)。 若要关闭缓存,请设置为 0

对于 Windows 应用,默认值为 1. 所有其他 Linux 应用的默认值为 0
WEBSITE_READONLY_APP 使用动态缓存时,可以通过将此变量设置为 D:\home\site\wwwroot 来禁用对应用根目录(/home/site/wwwroot1)的写入访问权限。 除了目录 App_Data ,不允许使用独占锁,以便锁定的文件不会阻止部署。

网络

以下环境变量与 混合连接虚拟网络集成相关。

设置名 说明
WEBSITE_RELAYS 只读。 配置混合连接所需的数据,包括终结点和服务总线数据。
WEBSITE_REWRITE_TABLE 只读。 在运行时用于执行查找并正确重写连接。
WEBSITE_VNET_ROUTE_ALL 默认情况下,如果使用 区域虚拟网络集成,应用只会将RFC1918流量路由到虚拟网络。 将其设置为 1 以便将所有出站流量路由到您的虚拟网络,并受同一网络安全组和用户定义的路由约束。 通过此设置,您可以通过虚拟网络访问非RFC1918的终结点,保护所有离开您应用程序的出站流量,并将所有出站流量强制通过隧道传输到您选择的网络设备。
WEBSITE_PRIVATE_IP 只读。 与虚拟网络集成的应用的关联 IP 地址。 对于区域虚拟网络集成,该值是来自委托子网的地址范围的 IP。 对于网关所需的虚拟网络集成,该值是虚拟网络网关上配置的点到站点地址池地址范围中的 IP。

应用使用此 IP 通过虚拟网络连接到资源。 此外,它还可以在所述地址范围内进行更改。
WEBSITE_PRIVATE_PORTS 只读。 在虚拟网络集成中,显示应用可用于与其他节点通信的端口。
WEBSITE_CONTENTOVERVNET 如果要在应用服务上装载 Azure 文件共享,并且存储帐户仅限于虚拟网络,请将此设置启用,并将其值设为 1

密钥保管库引用

以下环境变量与密钥保管库引用相关。

设置名 说明
WEBSITE_KEYVAULT_REFERENCES 只读。 包含有关目前在应用中配置的所有密钥保管库引用的信息(包括各种状态信息)。
WEBSITE_SKIP_CONTENTSHARE_VALIDATION 如果将应用的共享存储连接(通过使用 WEBSITE_CONTENTAZUREFILECONNECTIONSTRING)设置为密钥保管库引用,则在创建或更新应用时,如果满足以下条件之一,应用无法解析密钥保管库引用:

- 应用使用系统分配的标识访问密钥保管库。
- 应用使用用户分配的标识访问密钥保管库,密钥保管库 使用虚拟网络锁定

若要避免创建或更新时出错,请将此变量设置为 1
WEBSITE_DELAY_CERT_DELETION 设置此环境变量可确保在工作进程退出之前,不删除其依赖的证书1

跨域资源共享 (CORS)

以下环境变量与跨域资源共享(CORS)配置相关。

设置名 说明
WEBSITE_CORS_ALLOWED_ORIGINS 只读。 显示 CORS 允许的域。
WEBSITE_CORS_SUPPORT_CREDENTIALS 只读。 显示将 Access-Control-Allow-Credentials 标头设置为 true 是已启用 (True) 还是未启用 (False)。

身份验证和授权

以下环境变量与应用服务身份验证相关。

设置名 说明
WEBSITE_AUTH_DISABLE_IDENTITY_FLOW 设置为 true 时,禁用在基于 ASP.NET 的 Web 应用程序(包括 v1 函数应用)中分配线程主体标识。 此功能允许开发人员通过身份验证保护对其站点的访问,但仍使其在其应用逻辑中使用单独的登录机制。 默认为 false
WEBSITE_AUTH_HIDE_DEPRECATED_SID truefalse。 默认值是 false。 这是 Azure 应用服务的旧移动应用集成设置。 将该值设置为 true 可以解决这样的问题:经过身份验证的用户如果更改他们的配置文件信息,其生成的安全 ID 可能会发生变化。

更改此值可能会导致现有的 Azure 移动应用用户 ID 发生更改。 大多数应用不需要使用此设置。
WEBSITE_AUTH_NONCE_DURATION hours:minutes:seconds 格式的时间跨度值。 默认值为 00:05:00(即 5 分钟)。 此设置将控制为所有浏览器驱动的登录生成的加密 nonce 的生存期。如果登录未能在指定时间内完成,则会自动重试登录流。

此应用程序设置适用于 V1(经典)配置体验。 如果使用 V2 身份验证配置架构,则应改用 login.nonce.nonceExpirationInterval 配置值。
WEBSITE_AUTH_PRESERVE_URL_FRAGMENT 当设置为true后,用户选择包含 URL 片段的应用链接时,登录过程可确保您的 URL 中的片段部分不会在登录重定向过程中丢失。
WEBSITE_AUTH_USE_LEGACY_CLAIMS 为了在升级之间保持向后兼容性,身份验证模块使用 API 中 /.auth/me 短名称到长名称的旧声明映射,因此排除某些映射(例如,“角色”)。 若要获取较新版本的声明映射,请将此变量设置为 False。 在“角色”示例中,它将映射到长声明名称 http://schemas.microsoft.com/ws/2008/06/identity/claims/role
WEBSITE_AUTH_DISABLE_WWWAUTHENTICATE truefalse。 默认值是 false。 当它设置为 true时,它会从模块生成的 HTTP 401 响应中删除 WWW-Authenticate HTTP 响应标头。

此应用程序设置适用于 V1(经典)配置体验。 如果使用 V2 身份验证配置架构,则应改用 identityProviders.azureActiveDirectory.login.disableWwwAuthenticate 配置值。
WEBSITE_AUTH_STATE_DIRECTORY 启用基于文件的令牌存储时,用于存储令牌的本地文件系统目录路径。 默认值是 %HOME%\Data\.auth

此应用程序设置适用于 V1(经典)配置体验。 如果使用 V2 身份验证配置架构,则应改用 login.tokenStore.fileSystem.directory 配置值。
WEBSITE_AUTH_TOKEN_CONTAINER_SASURL 完全限定的 blob 容器 URL。 指示身份验证模块将所有加密令牌存储并加载到指定的 Blob 存储容器,而不是使用默认的本地文件系统。
WEBSITE_AUTH_TOKEN_REFRESH_HOURS 任何正整数。 默认值为 72(小时)。 会话令牌过期后,此设置控制 /.auth/refresh API 可用于刷新会话令牌的时间量。 在此时间段后刷新尝试失败,用户需要再次登录。

此应用程序设置适用于 V1(经典)配置体验。 如果使用 V2 身份验证配置架构,则应改用 login.tokenStore.tokenRefreshExtensionHours 配置值。
WEBSITE_AUTH_TRACE_LEVEL 控制写入到应用程序事件日志中的身份验证跟踪的详细程度。 有效值为 OffErrorWarningInformationVerbose。 默认值是 Verbose
WEBSITE_AUTH_VALIDATE_NONCE truefalse。 默认值是 true。 此值决不可设置为 false,但在临时调试交互式登录期间发生的加密 nonce 验证失败时除外。

此应用程序设置适用于 V1(经典)配置体验。 如果使用 V2 身份验证配置架构,则应改用 login.nonce.validateNonce 配置值。
WEBSITE_AUTH_V2_CONFIG_JSON Azure 应用服务会自动填充此环境变量。 此变量用于配置集成身份验证模块。 其值对应于 Azure 资源管理器中当前应用的 V2(非经典)身份验证配置。 它不用于显式配置。
WEBSITE_AUTH_ENABLED 只读。 注入到 Windows 或 Linux 应用,以指示是否启用了应用服务身份验证。
WEBSITE_AUTH_ENCRYPTION_KEY 默认情况下,自动生成的密钥用作加密密钥。 若要替代,请设置为所需的密匙。 如果要跨多个应用共享令牌或会话,建议使用此环境变量。 如果指定它,它将取代 MACHINEKEY_DecryptionKey 该设置。
WEBSITE_AUTH_SIGNING_KEY 默认情况下,自动生成的密钥用作签名密钥。 若要替代,请设置为所需的密匙。 如果要跨多个应用共享令牌或会话,建议使用此环境变量。 如果指定它,它将取代 MACHINEKEY_ValidationKey 该设置。

托管标识

以下环境变量与托管标识相关。

设置名 说明
IDENTITY_ENDPOINT 只读。 该 URL 用于检索应用的托管标识的令牌。
MSI_ENDPOINT 已弃用。 使用 IDENTITY_ENDPOINT
IDENTITY_HEADER 只读。 在发出 HTTP GET 请求到X-IDENTITY-HEADER时,必须将值添加到IDENTITY_ENDPOINT标头。 平台将对该值进行轮换。
MSI_SECRET 已弃用。 使用 IDENTITY_HEADER

运行状况检查

以下环境变量与运行状况检查相关。

设置名 说明
WEBSITE_HEALTHCHECK_MAXPINGFAILURES 删除实例之前失败的最大 ping 数。 设置为介于 210 之间的值。 纵向或横向扩展时,应用服务将对运行状况检查路径执行 ping 操作,以确保新实例准备就绪。 有关详细信息,请查阅运行状况探测
WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT 为避免正常运行的实例不堪重负,排除的实例不得过半。 例如,如果应用服务计划扩展到四个实例,三个实例不正常,则最多排除两个实例。 其他 2 个实例(1 个运行正常的实例和 1 个运行不正常的实例)将继续接收请求。 在最糟糕的情况下(即所有实例都运行不正常),将不排除任何实例。

若要重写此行为,请设置为介于 1100 之间的值。 值越高意味着将删除更多不健康的实例。 默认值为 50 (50%)。

推送通知

以下环境变量与推送通知功能相关。

设置名 说明
WEBSITE_PUSH_ENABLED 只读。 启用推送通知时添加。
WEBSITE_PUSH_TAG_WHITELIST 只读。 包含通知注册中的标记。
WEBSITE_PUSH_TAGS_REQUIRING_AUTH 只读。 包含通知注册中需要用户身份验证的标记列表。
WEBSITE_PUSH_TAGS_DYNAMIC 只读。 包含通知注册中自动添加的一系列标记。

备注

上表引用了允许列表 - Microsoft 不再使用这个术语。 从软件中删除术语后,我们会将其从本文中删除。

WebJobs

以下环境变量与 Web 作业相关。

设置名 说明
WEBJOBS_RESTART_TIME 对于连续作业,为作业进程因任何原因而停止时的延迟时间(以秒为单位),超过该时间后将会重启。
WEBJOBS_IDLE_TIMEOUT 对于触发的作业,为超时时间(以秒为单位)。 在此超时后,如果作业处于空闲状态、没有 CPU 时间或没有输出,则会停止该作业。
WEBJOBS_HISTORY_SIZE 对于触发的作业,为每个作业的历史记录目录中保留的最大运行次数。 默认为 50
WEBJOBS_STOPPED 设置为 1 禁用运行任何作业并停止所有当前正在运行的作业。
WEBJOBS_DISABLE_SCHEDULE 设置为 1 以关闭所有计划触发。 仍可手动调用作业。
WEBJOBS_ROOT_PATH WebJob 文件的绝对或相对路径。 对于相对路径,该值与默认根路径(D:/home/site/wwwroot//home/site/wwwroot/)组合在一起。
WEBJOBS_LOG_TRIGGERED_JOBS_TO_APP_LOGS 设置为 true 即可将触发的 Web 作业的输出发送到应用程序日志管道(该管道支持文件系统、blob 和表)。
WEBJOBS_SHUTDOWN_FILE 检测到关闭请求时应用服务创建的文件。 WebJob 进程负责检测此文件是否存在并启动关闭。 使用 WebJobs SDK 时,会自动处理此部件。
WEBJOBS_PATH 只读。 当前正在运行的作业的根路径(在临时目录下)。
WEBJOBS_NAME 只读。 当前作业名称。
WEBJOBS_TYPE 只读。 当前作业类型(triggeredcontinuous)。
WEBJOBS_DATA_PATH 只读。 包含当前作业的日志、历史记录和工件的元数据路径。
WEBJOBS_RUN_ID 只读。 对于触发的作业,为作业的当前运行 ID。

函数

设置名 说明
WEBSITE_FUNCTIONS_ARMCACHE_ENABLED 设置为 0 可禁用函数缓存。
WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 请参阅 Azure Functions 的应用设置参考
AzureWebJobsSecretStorageType 请参阅 Azure Functions 的应用设置参考
FUNCTIONS_EXTENSION_VERSION 请参阅 Azure Functions 的应用设置参考
FUNCTIONS_WORKER_RUNTIME 请参阅 Azure Functions 的应用设置参考
AzureWebJobsStorage 请参阅 Azure Functions 的应用设置参考
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING 请参阅 Azure Functions 的应用设置参考
WEBSITE_CONTENTSHARE 请参阅 Azure Functions 的应用设置参考
WEBSITE_CONTENTOVERVNET 请参阅 Azure Functions 的应用设置参考
WEBSITE_ENABLE_BROTLI_ENCODING 请参阅 Azure Functions 的应用设置参考
WEBSITE_USE_PLACEHOLDER 请参阅 Azure Functions 的应用设置参考
WEBSITE_PLACEHOLDER_MODE 只读。 显示函数应用正在占位符主机 (generalized) 上还是自己的主机 (specialized) 上运行。
WEBSITE_DISABLE_ZIP_CACHE 当你的应用从 ZIP 包 运行时( WEBSITE_RUN_FROM_PACKAGE=1),最近部署的五个 ZIP 包将缓存在应用的文件系统中(D:\home\data\SitePackages)。 将此变量设置为 1 以禁用此缓存。 对于 Linux 消耗应用,默认情况下禁用 ZIP 包缓存。