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供您参考。
所以我使用 Restlet Client 进行任何 API 工作,它似乎有一个奇怪的问题。我从 Portal 复制了默认值(主机密钥)并将 URL 粘贴到 Restlet Client 中,出于某种原因,代码参数的最后一个“==”被删除了。我使用 Postman 尝试了该请求,该请求成功了!
感谢大家的评论和回复!
使用 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供您参考。
所以我使用 Restlet Client 进行任何 API 工作,它似乎有一个奇怪的问题。我从 Portal 复制了默认值(主机密钥)并将 URL 粘贴到 Restlet Client 中,出于某种原因,代码参数的最后一个“==”被删除了。我使用 Postman 尝试了该请求,该请求成功了!
感谢大家的评论和回复!