Azure Function部署到Azure后,为何从App Settings而非local.settings.json读取配置?
Azure Function 本地与云端配置读取切换的底层机制
本地调试时的配置加载逻辑
- 本地用Visual Studio调试Azure Function时,依赖的Azure Functions Core Tools会自动读取项目里的
local.settings.json,把文件中Values节点下的所有键值对加载成当前运行环境的环境变量。 - 代码里不管用
IConfiguration还是Environment.GetEnvironmentVariable()读取配置,本质都是读取环境变量,只是本地环境下这些变量来自local.settings.json。另外这个文件默认不会被部署到Azure(.gitignore里默认包含了该文件的排除规则),避免本地配置泄露。
部署到Azure后的配置加载逻辑
- 函数部署到Azure后,云端的Functions运行时不会读取
local.settings.json(该文件并未上传至云端)。取而代之的是,Azure平台会把你在门户配置的App Settings中的键值对,注入到函数运行实例的环境变量里。 - 代码读取配置的逻辑完全没变,还是读取环境变量,但此时环境变量的来源变成了Azure的App Settings服务,自然就切换成了云端的配置。
核心本质
整个切换的核心就是环境变量的来源不同:本地开发时由Core Tools从本地配置文件导入,云端运行时由Azure平台从门户配置注入。这种设计让你不用修改代码,就能在不同环境使用不同配置,实现了环境隔离的需求。
内容的提问来源于stack exchange,提问作者John John
相关产品推荐
相关产品推荐

