Azure函数计时器触发器&;API管理-手动执行返回404

Azure函数计时器触发器&;API管理-手动执行返回404,azure,azure-functions,azure-api-management,Azure,Azure Functions,Azure Api Management,我有一个具有以下功能的应用程序: 由定时器触发器触发的一些功能 还有一些是由HTTP触发器触发的 我还为函数应用程序设置了一个Azure API管理服务,其中定义了HTTP触发的函数的端点 我正在尝试按照此处的指南手动触发一个计时器触发功能 然而,我在《邮递员》中得到了404的结果,尽管URL和x-functions-key似乎是正确的 职能: 关键是: 请求: 我还注意到: 如果我没有包含x-functions-key标题,那么我会得到401 Unauthorized结果 如果我包

我有一个具有以下功能的应用程序:

  • 由定时器触发器触发的一些功能
  • 还有一些是由HTTP触发器触发的
我还为函数应用程序设置了一个Azure API管理服务,其中定义了HTTP触发的函数的端点

我正在尝试按照此处的指南手动触发一个计时器触发功能

然而,我在《邮递员》中得到了404的结果,尽管URL和
x-functions-key
似乎是正确的

职能:

关键是:

请求:

我还注意到:

  • 如果我没有包含
    x-functions-key
    标题,那么我会得到
    401 Unauthorized
    结果
  • 如果我包含了一个错误的键,那么我会得到
    403禁止
是否与正在为功能应用程序设置的API管理服务有关?


我如何进一步排除故障?

我在我这边测试过,效果很好。请参阅以下屏幕截图:

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


在第一次测试时,我需要使用
…/TimerTrigger
,因为文档显示了
队列触发器和它的响应404。

我已经设法解决了它

结果是Azure函数计时器触发器需要六个部分的cron表达式(我只知道)

如果没有这一点,它将无法工作-遗憾的是,这在UI中不容易被注意到。 通过调查应用程序洞察日志,我意识到:

功能页面显示一切正常

更改CRON格式解决了404问题,我开始得到202个可接受的响应。

作为奖励,我必须补充: 即使响应被接受,触发也不能正常工作,因为我的函数返回类型是
Task
,而定时器触发的函数不接受该类型。

同样,只有ApplicationInsights显示出任何问题:

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


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

您也有API管理吗?@Bartosz我没有在APIM中测试它。我会测试它。谢谢-我已经更新了问题的细节,包括我如何发送请求等。这是一个开源项目()@Bartosz。它在我的apim中也可以正常工作,你的函数和我的函数之间的区别是,你的函数是从本地部署的,我直接在门户上创建的。但我也在VisualStudio中使用创建计时器触发函数进行测试,然后将其部署到门户,也可以手动触发。所以这很奇怪。@Bartosz您在门户上的函数路径似乎很奇怪。我的路看起来像,但你的是。看来你的职能比我的高一级。