我有一个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
是什么?
以及如何启用功能以使传出请求成为可能?
答案 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。