当前,我们有一个Azure函数(消费模式),该函数向运行在本地主机上的API发出HTTP请求。
Localhost API使用Web 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通过以下参数公开localhost API
ngrok http 55386 -host-header="localhost:55386" -region=au
在上述设置中
以下是ngrok屏幕截图
如果我更新AzureFunction应用程序以为每个请求创建一个新的HttpClient,则azure函数的执行将成功完成。
以下是ngrok的屏幕截图
以上不是我们可以实现的解决方案,因为我们将在生产环境中用尽最大连接限制以及其他性能限制。
按照以下问题
Ngrok not passing my post request on to localhost
我也曾尝试公开功能应用程序的HTTP端口,但在第一次localhost API调用后仍会超时。
猜想问题是-这是我们不得不转向更高计划(基本/专业版)的情况吗?还是我在这里遗漏了一些东西?
谢谢。