0

我正在尝试创建一个 Azure 函数,它使用 BlobTrigger 来操作一些文件,然后将它们保存回 blob。

为此,我希望能够访问BlobProperties对象以检查文件的Content-Type,以确保我的操作例程支持它。

我从这篇文章中了解到,我应该能够简单地在名为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 的,当然这应该可以解决吗?

感谢您的任何建议,提前感谢您。

4

1 回答 1

2

只需执行以下操作:

using System;
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage.Blob;

namespace FunctionApp48
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([BlobTrigger("test/{name}", Connection = "str")]CloudBlockBlob myBlob, string name, ILogger log)
        {
            string a = myBlob.Properties.ContentType;
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Properties.Length} Bytes"+"\n"+a);
        }
    }
}

我可以成功获取 blob 的内容类型:

在此处输入图像描述

和参考包:

<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="3.0.10" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
于 2020-12-11T02:01:21.620 回答