已禁用的Azure功能仍在运行

Sco*_*ren 8 azure azure-functions

我刚刚开始使用Microsoft Azure Functions进行测试.我有我的VS2017发布,我的功能很好.我目前有一个与我合作的功能.它设置在每5分钟一次的计时器上.

但是,即使我将其"禁用",该功能似乎也在执行.这可以在监视器中以及与其交互的系统中看到.我能够阻止它的唯一方法是停止整个功能组.当我然后启动功能组时,它会再次启动每5分钟运行一次的禁用功能.

我错过了什么吗?禁用个别功能是否还有其他用途?

如何使函数组中的单个函数不按其定义的计划执行?

谢谢.

Nar*_*ren 10

你所经历的是一种预期的行为,虽然不是一个理想的行为.这是门户体验中的一个错误.

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"
}
Run Code Online (Sandbox Code Playgroud)

由预编译函数生成的function.json由门户网站使用,这是门户网站中显示的内容.更改门户中函数的禁用状态时,在function.json中更改disabled属性,但函数运行时不会使用它.因此它继续执行.

当您将其部署在禁用状态时,运行时会意识到它并按预期使用它.

我已经打开了这个bug来修复门户体验. https://github.com/Azure/azure-functions-ux/issues/1857

  • 有两种方法可以禁用通过预编译程序集创建的函数.1.更新.cs文件中的属性并重新发布该功能.这将重新发布该功能.2.添加要由运行时监视的函数数组.每次要禁用/启用功能时更新它.您可以从功能应用程序设置更新host.json.这将重新启动主机.但它优雅地完成并由运行时管理."functions":["QueueProcessor","GitHubWebHook"]这里有更多信息https://github.com/Azure/azure-webjobs-sdk-script/wiki/host.json (2认同)