Azure Functions外发HTTP调用不起作用

时间:2019-08-29 13:58:37

标签: c# azure http azure-functions

我有一个Azure Servicebus函数触发器,该触发器应该在事件放入其指定队列时调用外部终结点。但是,当该函数接收事件并准备发出传出请求时,它将失败,并显示以下日志消息

  

已执行'AzureServicebusTrigger'(失败,ID = cb218eb5-300b-40c0-8a4e-81f977b9cd5c)   试图以其访问权限禁止的方式访问套接字。

我的功能:

public static class AzureServicebusTrigger
{

    private static HttpClient _httpClient = new HttpClient();

    [FunctionName("AzureServicebusTrigger")]
    public static async Task Run([ServiceBusTrigger("receiver", Connection = "ServiceBusConnectionString")]
        string myQueueItem, ILogger log)
    {
        var request = await _httpClient.GetAsync("http://<ip>:7000");
        var result = await request.Content.ReadAsStringAsync();
    }
}

permission是什么?

以及如何启用功能以使传出请求成为可能?

2 个答案:

答案 0 :(得分:1)

我有一个有根据的猜测。我以前在Web Apps中已经看到了这一点。如果您用尽了定价层中所选SKU的可用出站连接数,则可能会发生这种情况。

我猜您正在使用Azure Function消费计划。如果是这样,您将被限制为600个活动连接(see here)。因此,如果您间歇性地遇到此问题,请尝试移至“高级”层或“标准”或更高版本的应用程序服务计划。

答案 1 :(得分:0)

我认为罗伯·里根是正确的。为了帮助您接受他的答案是正确的,我提出以下建议。

您能否检查故障时刻有多少个函数执行和服务器(函数主机实例)。您可以通过adding Application Insights并编写这样的查询来实现。

performanceCounters
| where cloud_RoleName =~ 'YourFunctionName'
| where timestamp > ago(30d)
| distinct cloud_RoleInstance

或者通过重载并观看live monitor