配置应用程序设置
在应用服务中,应用设置是作为环境变量传递给应用程序代码的变量。 对于 Linux 应用和自定义容器,应用服务使用 --env 标志将应用设置传递给容器,以在容器中设置环境变量。 无论是这两种情况中的哪一种,它们都会在应用启动时注入到应用环境。 在添加、删除或编辑应用设置时,应用服务会触发应用重启。
对于 ASP.NET 和 ASP.NET Core 开发人员而言,在应用服务中设置应用设置类似于在 Web.config 或 appsettings.json 中的 <appSettings> 内进行设置,但应用服务中的值会替代 Web.config 或 appsettings.json 中的值。 可在 Web.config 或 appsettings.json 中保留开发设置(例如本地 MySQL 密码),并在应用服务中保护生产机密(例如 Azure MySQL 数据库密码)。 这个代码在本地调试时使用你的开发设置,在部署到 Azure 时使用你的生产机密。
应用设置在存储时始终加密(静态加密)。 应用设置名称只能包含字母、数字 (0-9)、句点 (“.”) 和下划线 (“_”)。应用设置值中的特殊字符必须根据目标操作系统的需要进行转义。
可以通过导航到应用的管理页并选择“环境变量”>“应用程序设置”访问应用程序设置。
添加和编辑设置
若要添加新的应用设置,请选择“+ 添加”。 如果使用的是部署槽位,则可以指定设置是否可交换。 在对话框中,你可以将设置固定到当前槽。
完成后,选择“应用”。 不要忘记返回“环境变量”页并选择“应用”。
注意
在默认 Linux 应用服务或自定义 Linux 容器中,名为 ApplicationInsights:InstrumentationKey 的应用设置中的任何嵌套 JSON 密钥结构都需要在密钥名称为 ApplicationInsights__InstrumentationKey 的应用服务中进行配置。 换句话说,将任何:替换为__(即双下划线)。 应用设置名称中的任何句点都将替换为 _(单个下划线)。
批量编辑应用程序设置
若要批量添加或编辑应用设置,请选择“高级”编辑按钮。 完成后,选择“确定”。 不要忘记返回“环境变量”页并选择“应用”。 应用设置具有以下 JSON 格式:
[
{
"name": "<key-1>",
"value": "<value-1>",
"slotSetting": false
},
{
"name": "<key-2>",
"value": "<value-2>",
"slotSetting": false
},
...
]
配置连接字符串
对于 ASP.NET 和 ASP.NET Core 开发人员,在应用服务中设置连接字符串类似于在 Web.config 中的 <connectionStrings> 内进行设置,但在应用服务中设置的值会替代 Web.config 中相应的值。对于其他语言堆栈,最好改用应用设置,因为连接字符串需要在变量键中进行特殊格式设置才能访问值。
提示
在一种情况下,你可能想要使用连接字符串而不是 non-.NET 语言的应用设置:只有在应用服务应用中为数据库配置了连接字符串时,才会将某些 Azure 数据库类型与应用一起备份。
添加和编辑连接字符串遵循与其他应用设置相同的原则,也可绑定到部署槽位。 你将用于批量添加或编辑的 JSON 格式设置中的连接字符串示例:
[
{
"name": "name-1",
"value": "conn-string-1",
"type": "SQLServer",
"slotSetting": false
},
{
"name": "name-2",
"value": "conn-string-2",
"type": "PostgreSQL",
"slotSetting": false
},
...
]
注意
面向 PostgreSQL 的 .NET 应用应将连接字符串设置为 “自定义 ”,以便在 .NET EnvironmentVariablesConfigurationProvider中解决已知问题。
在运行时,连接字符串可用作环境变量,其前缀为以下连接类型:
- SQLServer:
SQLCONNSTR_ - MySQL:
MYSQLCONNSTR_ - SQLAzure:
SQLAZURECONNSTR_ - 自定义:
CUSTOMCONNSTR_ - PostgreSQL:
POSTGRESQLCONNSTR_ - 通知中心:
NOTIFICATIONHUBCONNSTR_ - 服务总线:
SERVICEBUSCONNSTR_ - 事件中心:
EVENTHUBCONNSTR_ - 文档 DB:
DOCDBCONNSTR_ - Redis 缓存:
REDISCACHECONNSTR_
例如,可以使用环境变量 的形式访问名为 connectionstring1 的 MySQL 连接字符串。
为自定义容器配置环境变量
自定义容器可能会使用需要在外部提供的环境变量。 可以通过 Cloud Shell 传递这些环境变量。 在 Bash 中:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings key1=value1 key2=value2
在 PowerShell 中:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"DB_HOST"="myownserver.mysql.database.azure.com"}
当应用运行时,应用服务应用设置会自动作为环境变量注入到进程中。 可以通过 URL https://<app-name>.scm.azurewebsites.net/Env 来验证容器环境变量。