【问题标题】:Azure Function Timer Trigger & API management - Manual execution returns 404Azure Function Timer Trigger & API management - 手动执行返回 404
【发布时间】:2021-08-24 07:42:28
【问题描述】:

我有一个函数应用:

  • 定时器触发器触发的几个函数
  • 还有一些由 HTTP 触发器触发。

我还为函数应用设置了Azure API 管理服务,其中定义了HTTP 触发 函数的端点。

我正在尝试按照此处https://docs.microsoft.com/en-us/azure/azure-functions/functions-manually-run-non-http 的指南手动触发我的计时器触发功能之一

尽管 URL 和 x-functions-key 看似正确,但我在 Postman 中得到了 404 结果。

功能:

关键:

请求:

我还注意到:

  • 如果我不包含 x-functions-key 标头,那么我会得到 401 Unauthorized 结果
  • 如果我包含 不正确 键,则会得到 403 Forbidden

会不会和函数应用设置的API管理服务有关?

如何进一步解决此问题?

【问题讨论】:

    标签: azure azure-functions azure-api-management


    【解决方案1】:

    我已经解决了。

    原来 Azure Functions 计时器触发器需要六部分 cron 表达式(我只知道the five part style

    没有它,它就不起作用 - 遗憾的是,这在 UI 中不容易被注意到。 通过调查 Application Insights 日志,我意识到:

    功能页面显示一切正常

    更改 CRON 格式已修复 404 问题,我开始收到 202 Accepted 响应。

    作为补充说明,我必须补充:

    即使响应是 202 Accepted,触发也不能正常工作,因为我的函数返回类型是 Task<IActionResult>,它不被定时器触发函数接受。

    同样,只有 ApplicationInsights 表明有任何问题:

    “MonkeyUserRandom”函数出错:Microsoft.Azure.WebJobs.Host:错误索引方法“MonkeyUserRandom”。 Microsoft.Azure.WebJobs.Host:无法将参数“$return”绑定到类型 IActionResult&。确保绑定支持参数类型。如果您正在使用绑定扩展(例如 Azure 存储、ServiceBus、计时器等),请确保您已在启动代码中调用了扩展的注册方法(例如 builder.AddAzureStorage()、builder.AddServiceBus( )、builder.AddTimers() 等)。

    这是“手动触发非 http 函数不起作用”的额外提示。

    【讨论】:

      【解决方案2】:

      我在我身边测试它,它工作正常。请参考以下截图:

      请检查您是否请求 https://xxx.azurewebsites.net/admin/functions/TimerTrigger1 而不是 https://xxx.azurewebsites.net/admin/functions/TimerTrigger。请注意它是“TimerTrigger1”。

      我在第一次测试时请求..../TimerTrigger,因为文档显示我们QueueTrigger,它响应404。

      【讨论】:

      • 你也有 API 管理吗?
      • @Bartosz 我没有在 APIM 中测试它。我会测试它。
      • 谢谢 - 我已经更新了问题,详细说明了我如何发送请求等。这是针对开源项目 (dailycomic.github.io)
      • @Bartosz 它在我的 apim 中也可以正常工作,你的函数和我的函数之间的区别是你的函数是从本地部署的,我直接在门户上创建它。但我也测试了在Visual Studio中创建一个定时器触发功能,然后将它部署到门户,它也可以手动触发。所以很奇怪。
      • @Bartosz 您的功能在门户网站上的路径似乎很奇怪。我的路径看起来像 this,但你的路径是 this。看来你的功能比我的高一级。
      猜你喜欢
      • 2023-01-21
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 2021-07-26
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多