Azure 函数通用 Webhook

Azure Function Generic Webhook

使用 Visual Studio 2017,我创建了一个带有通用 WebHook 的函数应用程序:

public static class FunctionWebHook
    {
        [FunctionName("FunctionWebHook")]
        public static async Task<object> Run([HttpTrigger(WebHookType = "genericJson")]HttpRequestMessage request, TraceWriter log)
        {
            log.Info($"Webhook was triggered!");

            string jsonContent = await request.Content.ReadAsStringAsync();

            log.Info(jsonContent);

            return request.CreateResponse(HttpStatusCode.NoContent);
        }
    }

代码只是默认模板。我将其部署到我的 Azure 帐户并尝试调用它。我在门户网站上使用 'Get function url' link 来获得正确的 URL,这包括代码和 clientId 参数。当我尝试 POST JSON 函数(内容类型设置为 application/json)时,我收到 400 Bad Request:

{"Message":"The 'code' query parameter provided in the HTTP request did not match the expected value."}

我检查了代码参数,是正确的。我也多次重新创建了 Function App,但我仍然收到错误。当我使用 Portal 的 运行 命令调用函数时,它会正确执行。

以前有人遇到过这个问题吗?

您选择了哪个密钥来验证您的请求?有 3 种类型的键。请选择默认值(功能键)并使用生成的 URL 和键。我这边测试过,功能键可以通过服务器验证。

关于功能键和主机键的更多信息,下面link供您参考。

Azure Function WebHook API Keys

所以我使用 Restlet Client 进行任何 API 工作,它似乎有一个奇怪的问题。我从 Portal 复制了默认值(主机密钥)并将 URL 粘贴到 Restlet Client 中,出于某种原因,代码参数的最后一个“==”被删除了。我使用 Postman 尝试了该请求,该请求成功了!

感谢大家的评论和回复!