Triggers Azure函数BlobTrigger激发,但未找到blob

Triggers Azure函数BlobTrigger激发,但未找到blob,triggers,azure-functions,azure-blob-storage,azure-durable-functions,Triggers,Azure Functions,Azure Blob Storage,Azure Durable Functions,我终于用下面的代码复制了这个问题。 我只是用一个blob触发器触发一个持久函数,在其中一个活动函数中我读取了blob。但是当我读取blob时,我得到一个错误,即blob不存在 有人能解释一下我做错了什么吗 代码: [FunctionName(“BlobTrigger”)] 公共静态异步无效触发器( [BlobTrigger(“传入blob/{filename}”,Connection=“”)]Stream myBlob, [OrchestrationClient]DurableOrchestra

我终于用下面的代码复制了这个问题。 我只是用一个blob触发器触发一个持久函数,在其中一个活动函数中我读取了blob。但是当我读取blob时,我得到一个错误,即blob不存在

有人能解释一下我做错了什么吗

代码:

[FunctionName(“BlobTrigger”)]
公共静态异步无效触发器(
[BlobTrigger(“传入blob/{filename}”,Connection=“”)]Stream myBlob,
[OrchestrationClient]DurableOrchestrationClient启动器,
字符串文件名,
ILogger日志)
{
var instanceId=await starter.StartNewAsync(“Orchestrator”,文件名);
}
[函数名(“编排器”)]
公共静态异步任务RunOrchestrator(
[OrchestrationTrigger]DurableOrchestrationContext(上下文)
{
var filename=context.GetInput();
wait context.CallActivityAsync(“Read_Blob”,filename);
}
[函数名(“Read_Blob”)]
公共静态异步任务活动(
[ActivityTrigger]字符串文件名,
[Blob(“传入Blob”)]CloudBlobContainer容器,
ILogger日志)
{
var stream=newmemoryStream();
var blob=container.GetBlockBlobReference(文件名);
等待blob.DownloadToStreamAsync(流);
//在第行上方引发异常。
stream.Dispose();
}

看起来您正在尝试
容器.GetBlockBlobReference(“文件名”)
而不是
容器.GetBlockBlobReference(文件名)
使用传入的参数
[ActivityTrigger]字符串文件名

。。。这显然是对我们正在进行的工作的简化。答案在于使用blobContainer绑定,而不是直接绑定到blob内容或流。即便如此,这也应该行得通。当文件不可访问时,blob触发器可能会触发,这是疯狂的。它应该是
var blob=container.GetBlockBlobReference(filename)而不是
var blob=container.GetBlockBlobReference(“文件名”)还是只是一个输入错误?最后一条评论:您应该使用EventGridTrigger而不是BlobTrigger:。是的,只是一个输入错误。。。我花了一上午的时间理解EventTrigger,当然可以使用它,但是BlobTrigger不就是一个过滤的EventTrigger吗?是什么让你说这会是一个更好的选择?@KickinMhl,你仍然会得到一个例外?不经常。。。特别是在这个基本代码示例中,但是,当存在大量流量时,流量似乎会降低,然后我们会遇到异常。比如说,现在这个方法很好用。但是在我们进行一些小负载测试时遇到了问题,我部署了这段代码,并且遇到了同样的问题。
[FunctionName("BlobTrigger")]
public static async void Trigger(
[BlobTrigger("incoming-blob/{filename}", Connection = "")]Stream myBlob,
[OrchestrationClient]DurableOrchestrationClient starter,
string filename,
ILogger log)
{
    var instanceId = await starter.StartNewAsync("Orchestrator", filename);
}

[FunctionName("Orchestrator")]
public static async Task RunOrchestrator(
    [OrchestrationTrigger] DurableOrchestrationContext context)
{
    var filename = context.GetInput<string>();
    await context.CallActivityAsync("Read_Blob", filename);
}

[FunctionName("Read_Blob")]
public static async Task Activity(
    [ActivityTrigger] string filename,
    [Blob("incoming-blob")] CloudBlobContainer container,
    ILogger log)
{
    var stream = new MemoryStream();
    var blob = container.GetBlockBlobReference(filename);
    await blob.DownloadToStreamAsync(stream);
    //EXCEPTION THROWN AT ABOVE LINE.
    stream.Dispose();
}