Azure Function 方法名称重要吗?

Mat*_*hew 4 azure azure-functions

我目前正在开发一些 C# Azure Functions。我使用的命名约定是Process[ThingIWantToProcess]()这样的......

public static void ProcessRequest([TimerTrigger("00:00:10", RunOnStartup = true, UseMonitor = false)] TimerInfo timer, ILogger logger)
{
     // Do function things
}
Run Code Online (Sandbox Code Playgroud)

几天前,所有功能(目前有 6 个)在部署时停止运行,但据我所知或看到,代码没有发生任何更改。

本地和 Kudu 控制台的控制台都会显示“找到以下功能:”并显示所有预期的功能;但是,这些函数永远不会运行。

我尝试了各种方法,包括重新部署、重新启动 Azure Web 作业以及更改方法的内容,但仍然没有任何结果。然后,我更改了该函数的名称,突然它开始工作了!

所以不是ProcessRequestnow ProcessRequest1,并且该函数成功触发。我用几种不同的方式更改了名称,所有这些都有效,但是当我改回 时ProcessRequest,它又停止工作了。

我在文档或互联网搜索中找不到任何解释此行为的信息,我担心在未来的维护过程中它会再次发生。

有其他人经历过这种情况吗?如果是的话,你能给我一些解释吗?

小智 6

嘿嘿!!这是由于 TimerTrigger 使用锁定行为来确保只有一个函数实例在横向扩展的实例上运行。因此,如果您对多个网络作业使用相同的存储帐户,您将面临这个问题。

要解决此问题,我建议为您的作业创建单独的存储帐户,它应该按原样工作!

欲了解更多信息,请访问:https://github.com/Azure/azure-webjobs-sdk/issues/614