Azure Web钩子错误:HTTP请求中提供的“code”查询参数与预期值

时间:2016-12-06 10:57:50

标签: azure mobile

我在天蓝色的功能应用程序中创建了一个基于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);
}

3 个答案:

答案 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钩子函数,看看我是否可以击中其中一个。 没有成功与以前相同的错误。 但后来我回到了原来的功能,突然之间起了作用。我不知道为什么我测试的一个新的网络挂钩是旧版本的副本,它仍然无法正常工作。也许天蓝色的功能专家对此有更多了解。