В настоящее время у нас есть функция Azure (режим потребления), которая отправляет HTTP-запросы API-интерфейсам, работающим на localhost.
Localhost API создается с использованием веб-API и работает на Windows 10.
AzureФункция имеет один статический экземпляр HttpClient, и мы повторно используем экземпляр HttpClient для всех вызовов.
public static class AzureFunctionApp
{
static HttpClient _httpClient = new HttpClient();
[FunctionName("NameOfFunction")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log, CancellationToken cancellationToken)
{
//await _httpClient.GetAsync
// some business rules
//await _httpClient.SendAsync
// some business rules
//await _httpClient.GetAsync
// some business rules
//await _httpClient.PostAsync
}
Мы используем ngrok для предоставления API-интерфейсов localhost с использованием следующих параметров
ngrok http 55386 -host-header="localhost:55386" -region=au
В приведенной выше настройке
- Функция Azure успешно завершает первый вызов API localhost
- Функция Azure отправляет запрос на второй API localhost, но не получает ответ, приводяФункция Azure для тайм-аута.Если я поставлю точку останова в API локального хоста, я увижу, что ответ был возвращен успешно, но не получен функцией Azure.
- Функция Azure в конечном итоге отключается
Ниже приведеныснимок экрана ngrok
- до выполнения функции Azure
- после выполнения функции Azure (разout)
Если я обновлю приложение AzureFunction для создания нового HttpClient для каждого запроса, выполнение функции Azure завершится успешно.
Ниже приведены снимки экрана ngrok
- Перед выполнением функции Azure
- После выполнения функции Azure
Вышеприведенное решение не является решением, которое мы можем реализовать, поскольку мы исчерпаем максимальный предел подключения впроизводственная среда среди прочих ограничений производительности.
Согласно приведенному ниже вопросу
Ngrok не передает мой запрос на локальный хост
Я также пыталсяпредоставляя порт HTTP для приложения-функции, но я все еще получаю тайм-аут после первого вызова API localhost.
Угадай вопрос: это тот случай, когда нам приходится переходить на более высокий план (Basic / pro)?или я что-то здесь упускаю?
Заранее спасибо.