我在天蓝色的功能应用程序中创建了一个基于c#的Web钩子,基于Adrian Halls关于github.io的优秀书籍
在门户网站中测试时,Web挂钩和应用程序正在成功运行。 当我从我的控制器调用webhook时,我可以看到我有正确的参数和uri。但由于某种原因,我的功能应用程序从不输入我的方法,并给我一个错误说:
The 'code' query parameter provided in the HTTP request did not match the expected value
我的问题是我在请求中有我的代码查询参数。 基本上我只是想在我的数据库中插入新的todoitem时触发webhook。
有人知道会出现什么问题吗?
代码: 从api控制器调用后端的webhook方法
// POST tables/TodoItem
public async Task<IHttpActionResult> PostTodoItem(TodoItem item)
{
TodoItem current = await InsertAsync(item);
Webhook.SendAsync<TodoItem>(new Uri(WebhookUri), current);
return CreatedAtRoute("Tables", new { id = current.Id }, current);
}
后端的Webhook方法
public static async Task<HttpStatusCode> SendAsync<T>(Uri uri, T data)
{
var httpClient = new HttpClient();
httpClient.BaseAddress = uri;
var response = await httpClient.PostAsJsonAsync<T>("",data);
return response.StatusCode;
}
天蓝色的功能
#r "Newtonsoft.Json"
using System;
using System.Net;
using Newtonsoft.Json;
public static async Task<object> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info("Webhook triggered");
string jsonContent = await req.Content.ReadAsStringAsync();
dynamic data = JsonConvert.DeserializeObject(jsonContent);
log.Info($"Created New Todo ({data.Text}, {data.Complete})");
return req.CreateResponse(HttpStatusCode.OK);
}
答案 0 :(得分:2)
的Anders,
门户网站上的密钥管理用户界面确实存在一些问题,并且正在解决这些问题(您可以跟踪可能会影响您的here
目前,解决方法是通过打开&#34;键来确保您使用相应的密钥。功能面板,选择&#34;默认&#34;功能键,使用它作为代码。
还可以使用一个API直接从运行时请求密钥,这里有一个调用该API来检索给定函数的密钥的示例: https://<functionappname>.azurewebsites.net/admin/functions/<functionname>/keys?code=<your管理密钥&gt;
答案 1 :(得分:2)
今天有同样的问题。转到Azure功能的“管理”面板。在那里你可以复制“默认”键,它起作用
答案 2 :(得分:1)
这一定是azure功能应用中的一个错误。 我创建了几个Web钩子函数,看看我是否可以击中其中一个。 没有成功与以前相同的错误。 但后来我回到了原来的功能,突然之间起了作用。我不知道为什么我测试的一个新的网络挂钩是旧版本的副本,它仍然无法正常工作。也许天蓝色的功能专家对此有更多了解。