Невозможно вручную запустить триггер Azure Timer с помощью httpclient post request - PullRequest
0 голосов
/ 20 марта 2019

enter image description here

enter image description here

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

Я пытаюсь вручную запустить приложение-функцию таймера Azure, созданное в 2.0 и разработанное в .net core 2.0.

Когда я пытаюсь нажать на ссылку, я получаю ошибку 403.

apikey, который я передаю, выбран из: enter image description here

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

В качестве статьи, которую вы предоставили, вам нужно использовать _master key в Manage и Host key enter image description here

1 голос
/ 22 марта 2019

Я использую следующий класс в своих интеграционных тестах для функций Azure, запущенных из служебной шины.

 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}");
    }
}

Затем вы должны отправить данные в формате, в котором вы помещаете содержимое в объект «ввода».

 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);`

Чтобы объяснить свойство ввода, вот как выглядит тот же вызов в почтальоне:

enter image description here

...