我有一个 Azure 计时器触发函数,计划在生产中每 3 个月运行一次。然而,在测试环境中,我希望它在每次触发时在启动时运行。
目前我有:
[TimerTrigger("%TimerInterval%", RunOnStartup = false)]
我真的不想改变RunonStartup
to true
但想知道是否有办法在配置中设置它?
是否可以做类似的事情:
RunOnStartup = "%RunOnStartUpBool%"
并在应用程序设置中进行设置?
更新 2022-03-30:我之前的答案是更新您的代码以使用#IF Debug
预处理器指令作为切换到RunOnStartup=true
方法参数。从 2022 年开始,您可以绕过这个笨拙的解决方法,只需在 VS Code Azure Functions 扩展中选择一个选项即可!这似乎不那么复杂。还有更多信息.
另一种选择是登录 Azure 门户,导航到函数应用并使用函数的“测试/运行”选项卡。
旧答案:有一个很好的问题,同一个问题有多个答案here https://stackoverflow.com/questions/46556621/what-is-the-simplest-way-to-run-a-timer-triggered-azure-function-locally-once.
我的测试环境通常是我本地的环境。因此,如果我们想编写仅在本地环境中运行而不是在生产中运行的代码,我们可以使用预处理指令 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives/preprocessor-if在只设置的方法签名的中间RunOnStartup=true
当您处于调试模式时。
public static void Run([TimerTrigger("%TimerInterval%"
#if DEBUG
,RunOnStartup=true // When debugging... run the job as soon as we press debug, no need to wait for the timer.
#endif
)]TimerInfo myTimer)
{
说明:在本地开发(调试)期间#if DEBUG
块被激活。
它使RunOnStartup=true
范围。在生产中(不是调试)#if DEBUG
块被隐藏。
显然不是最漂亮的代码。但比其他选择要好得多......例如在开发期间必须等待计时器触发间隔。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)