具有 Blob 触发器的 Azure 函数,旨在每当将新 Blob 上传到我的 Azure 存储帐户中的特定容器时执行。但是,该函数没有按预期触发。我已验证 blob 确实已上传到容器,但该功能仍处于非活动状态。
当我访问 Portal.azure.com 中的函数应用程序时,函数就会执行并处理所有待处理的文件
我已经仔细检查了以下内容:
函数应用程序运行正常。 存储帐户连接字符串有效并且具有该函数的适当权限。 function.json(或等效文件)中的 blob 触发器配置与预期容器和路径(如果适用)匹配。
注意:我正在使用消费计划
下面是对我有用的代码:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace FunctionApp161
{
public class Function1
{
private readonly ILogger<Function1> _logger;
public Function1(ILogger<Function1> logger)
{
_logger = logger;
}
[Function(nameof(Function1))]
public async Task Run([BlobTrigger("rithwik/fold1/{name}", Connection = "rithcon")] Stream stream, string name)
{
using var blobStreamReader = new StreamReader(stream);
var content = await blobStreamReader.ReadToEndAsync();
_logger.LogInformation($"C# Blob trigger function Processed blob\n Name: {name} \n Data: {content}");
}
}
}
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"rithcon": "DefaultEndpointsProtocol=https;AccountName=rithwik54;AccountKey=hCvncfYA8EdmQ==;EndpointSuffix=core.windows.net"
}
}
然后部署到azure函数,然后在部署后添加连接字符串,如下所示:
输出:
blob 上传后:
功能被触发:
现在功能 Gettig 在访问门户时触发(功能应用程序-->功能 1)最近没有更改或部署。
如果您正在打开函数并且它被触发,这不是预期的行为,因为函数应该只在新的 blob 上传时触发,我建议您提出支持请求,我建议您创建一个新的 azure 函数应用程序并按照我的步骤已经得到了想要的和预期的结果。