Azure Functions计时器触发器自定义设置添加位置及读取方法
Azure Functions 自定义设置配置与读取
一、自定义设置该放哪个文件?
- local.settings.json:仅用于本地开发调试,把你的自定义键值对(比如数据库连接串、API密钥)放到这个文件的
Values节点里即可。这个文件不会被部署到Azure,本地运行函数时会优先读取这里的配置。 - host.json:用于配置函数应用的全局运行规则,比如日志级别、批量处理上限、超时时间这类全局行为,不要把业务相关的自定义设置放在这里。
- 部署到Azure之后,直接在Azure门户的「配置」→「应用程序设置」中添加对应的键值对,和
local.settings.json里的内容对应上即可。
二、没有Program.cs/Startup.cs时怎么读设置?
不管你的函数是进程内还是隔离模式(无这两个文件一般是进程内旧模板),以下几种方法都可以读取自定义设置:
1. 依赖注入(推荐)
在函数类的构造函数中注入IConfiguration,之后直接读取配置:
public class MyFunction { private readonly IConfiguration _config; public MyFunction(IConfiguration config) { _config = config; } [FunctionName("MyFunction")] public async Task Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log) { string myCustomSetting = _config["MyCustomSetting"]; log.LogInformation($"读取到自定义设置:{myCustomSetting}"); } }
2. 直接读取环境变量
local.settings.json中Values节点的内容会被加载为环境变量,因此可以直接用Environment.GetEnvironmentVariable读取:
[FunctionName("MyFunction")] public async Task Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log) { string myCustomSetting = Environment.GetEnvironmentVariable("MyCustomSetting"); log.LogInformation($"读取到自定义设置:{myCustomSetting}"); }
3. 配置绑定(特定场景使用)
如果想直接把设置绑定到函数参数上,可以使用[Configuration]属性:
[FunctionName("MyFunction")] public async Task Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, [Configuration("MyCustomSetting")] string myCustomSetting, ILogger log) { log.LogInformation($"读取到自定义设置:{myCustomSetting}"); }
内容的提问来源于stack exchange,提问作者Lamar
相关产品推荐
相关产品推荐

