WebJob Timer Schedule能否存于appsetting.json子对象?读取失败求助
TimerTrigger读取嵌套配置中Cron表达式失败的解决方案
问题场景
将Cron字符串存储在appsetting.json根节点时,TimerTrigger可以正常读取;但将配置嵌套到子对象后,无法读取到对应的Cron表达式。
配置文件(appsetting.json)示例
"EETHistoryJobSettings": { "SomeSetting": { "Name": "A" }, "Schedule": "*/15 * * * * *" }
现有TimerTrigger代码
public async Task Run([TimerTrigger("%EETHistoryJobSetting.Schedule%", RunOnStartup = true)] TimerInfo timerInfo, ILogger logger) { // 业务逻辑代码 }
问题原因及解决方法
可以在子对象中指定Cron时间,不需要必须放在根节点。你的问题是配置路径拼写错误:
- 配置文件中的节点名称是
EETHistoryJobSettings(末尾有s) - 代码中写的是
%EETHistoryJobSetting.Schedule%(末尾缺少s)
修正后的代码如下:
public async Task Run([TimerTrigger("%EETHistoryJobSettings.Schedule%", RunOnStartup = true)] TimerInfo timerInfo, ILogger logger) { // 业务逻辑代码 }
额外检查项:
- 确认appsetting.json的复制属性设置为「如果较新则复制」或「始终复制」,避免部署时配置文件未被正确包含。
内容的提问来源于stack exchange,提问作者daxu
相关产品推荐
相关产品推荐

