2

我定义了一个使用 Azure 存储队列触发器和 Blob 输入绑定的 Azure 函数。我有一个用于队列触发器的 POCO,但是如何在 blob 输入绑定中使用该 POCO 和绑定表达式?

建筑:

  1. Azure 函数 2.x
  2. 预编译的 C# 库 (.NET Core 2.1)

POCO:

public class ImageToProcess
{
    public int CompanyId { get; set; }
    public string FullImagePath { get; set; }
}

蔚蓝功能:

public static void Run(
    [QueueTrigger("profile-image-queue", Connection = "ProfileImageQueue")]ImageToProcess myQueueItem,
    [Blob("profileimages/{queueTrigger.FullImagePath}", FileAccess.Read, Connection = "ProfileImageBlobConnectionString")] Stream originalImage,
    ILogger log)
{
    log.LogInformation($"Started Processing profile image: myQueueItem");
}

队列消息:

{ 
    "CompanyId": 123,
    "FullImagePath": "CompanyA/profileImage-original.png" 
}

错误信息:

System.Private.CoreLib:执行函数时出现异常:ProfileImageUploaded。Microsoft.Azure.WebJobs.Host:异常绑定参数“originalImage”。Microsoft.Azure.WebJobs.Host:访问“FullImagePath”时出错:属性不存在。

用于创建此解决方案的资源

  1. http://dontcodetired.com/blog/post/Improving-Azure-Functions-Blob-Trigger-Performance-and-Reliability-Part-2-Processing-Delays-and-Missed-Blobs
  2. https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue#trigger
  3. https://docs.microsoft.com/en-us/sandbox/functions-recipes/queue-storage#azure-storage-queue-trigger-using-a-poco

其他潜在解决方案: 我看到的唯一其他选择是使用命令式绑定,但我很确定我可以使用声明式绑定。 https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#binding-at-runtime

4

1 回答 1

2

在 Blob 绑定中使用以下内容:

"profileimages/{FullImagePath}" 

注意,如果FullImagePath代表一个 url 地址,则:

"{FullImagePath}" 
于 2019-10-04T15:02:04.590 回答