无法使用 httpclient post 请求手动触发我的 Azure 计时器触发器

Unable to manual trigger my Azure Timer Trigger using httpclient post request

https://docs.microsoft.com/en-us/azure/azure-functions/functions-manually-run-non-http

我正在尝试手动触发我在 2.0 中创建并在 .net core 2.0 中开发的 Azure 计时器功能应用程序。

当我尝试点击 url 时出现 403 错误。

我传递的 apikey 是从 :

作为您提供的文章,您需要在ManageHost key下使用_master key

我在针对服务总线触发的 Azure Functions 的集成测试中使用以下 class。

 class AzureFunctionCaller
{
    private readonly HttpClient _httpClient;
    private readonly string _functionUri;

    public AzureFunctionCaller(string functionName)
    {
        _httpClient = new HttpClient();

        _httpClient.DefaultRequestHeaders.Add("x-functions-key","<Key>");
        _functionUri = $"<FUNCTION_ENDPOINT>/admin/functions/{functionName}";
    }

    public async Task CallViaAdminEndpoint(string content)
    {
        var httpContent = new StringContent(content, Encoding.UTF8, "application/json");

        var response = await _httpClient.PostAsync(_functionUri, httpContent);

        var responseContent = await response.Content.ReadAsStringAsync();
        Console.WriteLine($"Response content: {responseContent}");
    }
}

然后您必须以将内容放入 "input" 对象的格式发送数据。

 var azureFunctionCaller = new AzureFunctionCaller("<FunctionName>");
 var obj = new
        {
            ... // properties you want to send
        };
        var jsonContent = JsonConvert.SerializeObject(new
        {
            input = JsonConvert.SerializeObject(obj)
        });
 await azureFunctionCaller.CallViaAdminEndpoint(jsonContent);`

为了解释输入 属性,这里是相同调用在 postman 中的样子: