在 Azure 门户中配置应用服务应用

本文介绍如何使用 Azure 门户配置 Web 应用、移动后端或 API 应用的常用设置。

配置应用设置

在应用服务中,应用设置是作为环境变量传递给应用程序代码的变量。 对于 Linux 应用和自定义容器,应用服务使用 --env 标志将应用设置传递到容器,以在容器中设置环境变量。 无论是这两种情况中的哪一种,它们都会在应用启动时注入到应用环境。 在添加、删除或编辑应用设置时,应用服务会触发应用重启。

Azure 门户中搜索并选择“应用服务” ,然后选择应用。

搜索应用服务

在应用的左侧菜单中,选择“配置” > “应用程序设置”。

应用程序设置

对于 ASP.NET 和 ASP.NET Core 开发人员而言,在应用服务中设置应用设置类似于在 Web.config 或 appsettings.json 中的 <appSettings> 内进行设置,但应用服务中的值会替代 Web.config 或 appsettings.json 中的值。 可以在 Web.config 或 appsettings.json 中保留开发设置(例如本地 MySQL 密码),并在应用服务中安全地保留生产机密(例如 Azure MySQL 数据库密码) 。 相同的代码在本地调试时使用开发设置,部署到 Azure 时使用生产机密。

同样,其他语言堆栈也会在运行时获取应用设置作为环境变量。 有关特定的语言堆栈步骤,请参阅:

应用程序设置在存储时始终进行加密(静态加密)。

备注

也可以使用 Key Vault 引用Key Vault 解析应用设置。

显示隐藏的值

默认情况下,出于安全考虑,应用设置值会隐藏在门户中。 若要查看某项应用设置的隐藏值,请单击该项设置的“值”字段。 若要查看所有应用设置的值,请单击“显示值”按钮。

添加或编辑

若要添加新的应用设置,请单击“新建应用程序设置”。 在对话框中,可将设置绑定到当前槽

若要编辑设置,请单击右侧的“编辑”按钮。

完成后,单击“更新”。 别忘了返回“配置”页并单击“保存”。

备注

在默认 Linux 应用服务或自定义 Linux 容器中,需要在应用服务中将应用设置名称(如 ApplicationInsights:InstrumentationKey)中的任何嵌套 JSON 密钥结构配置为密钥名称的 ApplicationInsights__InstrumentationKey。 换而言之,应将任何 : 替换为 __(双下划线)。

批量编辑

若要批量添加或编辑应用设置,请单击“高级编辑”按钮。 完成后,单击“更新”。 别忘了返回“配置”页并单击“保存”。

应用设置采用以下 JSON 格式:

[
  {
    "name": "<key-1>",
    "value": "<value-1>",
    "slotSetting": false
  },
  {
    "name": "<key-2>",
    "value": "<value-2>",
    "slotSetting": false
  },
  ...
]

通过 Azure CLI 自动执行应用设置

可使用 Azure CLI 从命令行创建和管理设置。

  • 使用 az webapp config app settings set 为设置分配一个值:

    az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings <setting-name>="<value>"
    

    <setting-name> 替换为设置的名称,并将 <value> 替换为要分配给它的值。 此方法会创建设置(如果尚不存在)。

  • 使用 az webapp config appsettings list 显示所有设置及其值:

    az webapp config appsettings list --name <app-name> --resource-group <resource-group-name>
    
  • 使用 az webapp config app settings delete 删除一个或多个设置:

    az webapp config appsettings delete --name <app-name> --resource-group <resource-group-name> --setting-names {<names>}
    

    <names> 替换为用空格分隔的设置名称列表。

配置连接字符串

Azure 门户中搜索并选择“应用服务” ,然后选择应用。 在应用的左侧菜单中,选择“配置” > “应用程序设置”。

应用程序设置

对于 ASP.NET 和 ASP.NET Core 开发人员而言,在应用服务中设置连接字符串类似于在 Web.config 中的 <connectionStrings> 内进行设置,但应用服务中设置的值会替代 Web.config 中的值。可将开发设置(例如,数据库文件)保留在 Web.config 中,并将生产机密(例如,SQL 数据库凭据)安全保留在应用服务中。 相同的代码在本地调试时使用开发设置,部署到 Azure 时使用生产机密。

对于其他语言堆栈,最好是改用应用设置,因为连接字符串需要在变量键中使用特殊的格式才能访问值。

备注

有一种情况你需要使用连接字符串而不是非 .NET 语言的应用设置:仅当你在应用服务应用中为数据库配置连接字符串时,某些 Azure 数据库类型才会与应用一起备份。 有关详细信息,请参阅备份的内容。 如果不需要这种自动化备份,请使用应用设置。

在运行时,连接字符串可用作环境变量,其前缀为以下连接类型:

  • SQLServer:SQLCONNSTR_
  • MySQL: MYSQLCONNSTR_
  • SQLAzure:SQLAZURECONNSTR_
  • 自定义:CUSTOMCONNSTR_
  • PostgreSQL:POSTGRESQLCONNSTR_

例如,可以使用环境变量 MYSQLCONNSTR_connectionString1 的形式访问名为 connectionstring1 的 MySql 连接字符串。 有关特定的语言堆栈步骤,请参阅:

连接字符串在存储时始终进行加密(静态加密)。

备注

也可以使用 Key Vault 引用Key Vault 解析连接字符串。

显示隐藏的值

默认情况下,出于安全考虑,连接字符串的值会隐藏在门户中。 若要查看连接字符串的隐藏值,只需单击该字符串的“值”字段。 若要查看所有连接字符串的值,请单击“显示值”按钮。

添加或编辑

若要添加新的连接字符串,请单击“新建连接字符串”。 在对话框中,可将连接字符串绑定到当前槽

若要编辑设置,请单击右侧的“编辑”按钮。

完成后,单击“更新”。 别忘了返回“配置”页并单击“保存”。

批量编辑

若要批量添加或编辑连接字符串,请单击“高级编辑”按钮。 完成后,单击“更新”。 别忘了返回“配置”页并单击“保存”。

连接字符串采用以下 JSON 格式:

[
  {
    "name": "name-1",
    "value": "conn-string-1",
    "type": "SQLServer",
    "slotSetting": false
  },
  {
    "name": "name-2",
    "value": "conn-string-2",
    "type": "PostgreSQL",
    "slotSetting": false
  },
  ...
]

配置常规设置

Azure 门户中搜索并选择“应用服务” ,然后选择应用。 在应用的左侧菜单中,选择“配置” > “常规设置”。

常规设置

在此处可以配置应用的某些常用设置。 某些设置要求纵向扩展到更高的定价层

  • 堆栈设置:用于运行应用的软件堆栈,包括语言和 SDK 版本。

    对于 Linux 应用和自定义容器应用,可选择语言运行时版本,并设置启动命令文件或可选的启动命令。

    Linux 容器的常规设置

  • 平台设置:用于配置托管平台的设置,包括:

    • 位数:32 位或 64 位。 (对于在门户中创建的应用服务,默认为 32 位。)

    • WebSocket 协议:例如,ASP.NET SignalRsocket.io

    • Always On:即使没有流量,也保持应用的加载状态。 如果未打开 Always On(默认),该应用会在 20 分钟后卸载,无需任何传入请求。 卸载的应用可能会因为存在预热时间而导致新请求的延迟过高。 如果打开了 Always On,前端负载均衡器会每隔五分钟向应用程序根目录发送一次 GET 请求。 连续的 ping 会阻止卸载该应用。

      对于连续的 WebJobs 或使用 CRON 表达式触发的 WebJobs,Always On 是必需的。

    • 托管管道版本:IIS 管道模式。 如果某个旧式应用需要旧版 IIS,请将此选项设置为“经典”。

    • HTTP 版本:设置为 2.0,以启用对 HTTPS/2 协议的支持。

    备注

    大多数新型浏览器仅支持通过 TLS 的 HTTP/2 协议,而非加密流量继续使用 HTTP/1.1。 若要确保客户端浏览器使用 HTTP/2 连接到应用,请保护自定义 DNS 名称。 有关详细信息,请参阅在 Azure 应用服务中使用 TLS/SSL 绑定保护自定义 DNS 名称

    • ARR 相关性:在多实例部署中,请确保在会话的整个生存期内,将客户端路由到同一实例。 对于无状态应用程序,请将此选项设置为“关闭”。
  • 调试:为 ASP.NETASP.NET CoreNode.js 应用启用远程调试。 此选项在 48 小时后会自动关闭。

  • 传入的客户端证书:要求在 相互身份验证中使用客户端证书。

配置路径映射

Azure 门户中搜索并选择“应用服务” ,然后选择应用。 在应用的左侧菜单中,选择“配置” > “路径映射”。

路径映射

备注

“路径映射”选项卡可能会显示特定于 OS 的设置,该设置与此处所示示例不同。

容器化应用

  • 名称:显示名称。
  • 配置选项:“基本”或“高级”。
  • 存储帐户:具有所需容器的存储帐户。
  • 存储类型:“Azure Blob”或“Azure 文件存储”。

    备注

    Windows 容器应用仅支持 Azure 文件存储。

  • 存储容器:对于基本配置,为所需的容器。
  • 共享名:对于高级配置,为文件共享名。
  • 访问密钥:对于高级配置,为访问密钥。
  • 装载路径:容器中用于装载自定义存储的绝对路径。

配置语言堆栈设置

后续步骤