我刚刚开始使用Microsoft Azure功能进行测试。我有我的VS2017发布,我的功能很好。我目前有一个与我合作的功能。它设置在每5分钟一次的计时器上。
但是,即使我已经禁用了#34;该功能似乎正在执行。这可以在监视器中以及与其交互的系统中看到。我能够阻止它的唯一方法是停止整个功能组。当我然后启动功能组时,它会再次每5分钟启动一次禁用功能。
我错过了什么吗?禁用单个功能是否还有其他用途?
如何让函数组中的单个函数不按其定义的计划执行?
感谢。
答案 0 :(得分:9)
您所经历的是预期的行为,虽然不是理想的行为。这是门户体验中的一个错误。
Function运行时直接使用预编译函数的二进制文件中的元数据。以下是禁用功能的注释示例。
[TimerTrigger("0 */5 * * * *"), Disable()]
这是由visual studio生成的function.json上面的注释。
{
"generatedBy": "Microsoft.NET.Sdk.Functions.MSBuild-1.0.2",
"configurationSource": "attributes",
"bindings": [
{
"type": "timerTrigger",
"schedule": "0 */5 * * * *",
"useMonitor": true,
"runOnStartup": false,
"name": "myTimer"
}
],
"disabled": true,
"scriptFile": "..\\bin\\FunctionApp3.dll",
"entryPoint": "FunctionApp3.Function1.Run"
}
由预编译函数生成的function.json由门户网站使用,这是门户网站中显示的内容。更改门户中函数的禁用状态时,在function.json中更改disabled属性,但函数运行时不会使用它。因此它继续执行。
当您将其部署在禁用状态时,运行时会意识到它并按预期将其尊重。
我已经打开了这个bug来修复门户体验。 https://github.com/Azure/azure-functions-ux/issues/1857
答案 1 :(得分:0)
今天,我遇到了同样的问题,在Azure中禁用该功能之后,建议您重新启动Function服务。由于Azure需要刷新元数据,因此重新启动是实现元数据的解决方案之一。