【发布时间】:2020-12-11 10:01:21
【问题描述】:
我正在尝试创建一个 Azure 函数,它使用 BlobTrigger 来操作一些文件,然后将它们保存回 Blob。
为此,我希望能够访问 BlobProperties 对象以检查文件的 Content-Type,以确保我的操作例程支持它。
我从article 了解到,我应该能够简单地在名为 Properties 的方法上添加一个参数,该方法的类型为 BlobProperties,我可以确认这一点适用于列出的其他元数据类型。
但是,每当我添加属性时,我的应用程序就无法运行并报告以下错误:
“Function1”函数出错:Microsoft.Azure.WebJobs.Host:错误索引方法“Function1”。 Microsoft.Azure.WebJobs.Host:无法将参数“属性”绑定到类型“Microsoft.WindowsAzure.Storage.Blob.BlobProperties”。
我做错了什么?下面是我的方法:
public static void Run([BlobTrigger("TestContainer/{name}", Connection = "AzureWebJobsStorage")] Stream inputFile,
string name, string BlobTrigger, IDictionary<string, string> Metadata, ILogger log, BlobProperties Properties)
我的目标框架是 .NET Core 3.1,Azure Functions 版本是 v3。 我有以下 NuGet 包:
- Microsoft.Azure.WebJobs.Extensions.Storage 4.0.3
- Microsoft.NET.Sdk.Functions 3.0.11
我看到一个类似的帖子建议删除对 Extensions.Storage 组件的引用,但这样做会删除 [BlobTrigger] 属性和其他类型,因此不起作用。相关问题似乎可以追溯到 2018 年,并且是针对旧版本的 Azure Function 的,这肯定可以解决吗?
感谢任何建议,提前谢谢。
【问题讨论】:
-
azure函数的参数类型是有限的。为什么不将 blob 视为像 blockblob 一样的对象,而是将其视为流?我认为像 blockblob 这样的类不应该导致序列化问题(我之前似乎做过类似的事情。)。传入blob对象并进行操作应该是可行的,大家可以试一试。
-
@BowmanZhu 对不起,我不确定我理解你的意思,你能提供一个例子吗?您是否建议将 inputFile 更改为键入 CloudBlockBlob?
-
我已经把答案贴出来了,你可以看看试试。
标签: azure-functions azure-blob-trigger