Hed*_*ten 7 azure .net-core azure-functions azure-app-configuration
我正在做一个计时器触发的 Azure 函数。我希望能够更改计时器,即 cron 表达式,而无需重新部署。我正在从 Azure 中的应用程序配置获取我的其他设置,但这对 TimerTrigger 不起作用,我得到:当我在 config 是 IConfiguration 的情况下编写时,非静态字段、方法或属性需要对象引用TimerTrigger(config["CronExpression"])。有谁知道如何使用 Azure 应用程序配置来做到这一点?除了本地开发之外,我不希望使用 settings.json 文件
您可以通过引用 括起来的名称来在配置中指定计时器表达式%...%。
schedule/ScheduleExpression:CRON 表达式或 TimeSpan 值。TimeSpan 只能用于在应用服务计划上运行的函数应用。您可以将计划表达式放入应用程序设置中,并将此属性设置为用 % 符号括起来的应用程序设置名称,如下例所示: "%ScheduleAppSetting%"。
https://github.com/Azure/azure-webjobs-sdk-extensions/blob/a34f4909bad85ebdb7777b2fe8a823d879f3c48d/src/WebJobs.Extensions/Extensions/Timers/TimerTriggerAttribute.cs#L21-L24的xml文档中没有提到它TimerTriggerAttribute
但是,TimerSchedule Create使用名称解析器https://github.com/Azure/azure-webjobs-sdk-extensions/blob/9feb4f2ad6f70e443a036a135b58121c70dbdaf3/src/WebJobs.Extensions/Extensions/Timers/Scheduling/TimerSchedule.cs#L65
...其中具有解析%...%值的逻辑https://github.com/Azure/azure-webjobs-sdk/blob/b798412ad74ba97cf2d85487ae8479f277bdd85c/src/Microsoft.Azure.WebJobs.Host/NameResolverExtensions.cs#L56-L72
...然后使用它从DefaultNameResolver配置中获取值https://github.com/Azure/azure-webjobs-sdk/blob/aeabc5f43f7c50ca67267cbfa429a08fc68623a9/src/Microsoft.Azure.WebJobs.Host/DefaultNameResolver.cs#L34
您可以通过引用由 括起来的名称在配置中指定计时器表达式%...%。例如,在您的配置中创建一个名称为MyTimerExpression和值的新值,例如0 */10 * * * *每 10 分钟运行一次。在您的本地开发环境中,这意味着在local.settings.json文件中添加一个条目,如下所示:
{
...
"MyTimerExpression": "0 */10 * * * *"
...
}
Run Code Online (Sandbox Code Playgroud)
现在在您的计时器触发器中,执行以下操作:
[TimerTrigger("%MyTimerExpression%")]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2859 次 |
| 最近记录: |