Azure Functions BlobTrigger 属性绑定问题
Azure Functions BlobTrigger Properties Binding Problem
我正在尝试创建一个 Azure 函数,它使用 BlobTrigger 来操作一些文件,然后将它们保存回 blob。
为此,我希望能够访问 BlobProperties 对象来检查文件的 Content-Type,以确保我的操作例程支持它。
根据我的理解article,我应该能够简单地在名为 Properties 的方法上添加一个参数,该方法的类型为 BlobProperties 我可以确认这适用于列出的其他元数据类型。
但是,每当我添加属性时,我的应用程序都无法运行并报告以下错误:
The 'Function1' function is in error: Microsoft.Azure.WebJobs.Host: Error indexing method 'Function1'. Microsoft.Azure.WebJobs.Host: Can't bind parameter 'Properties' to type '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
我看到了类似的 post,它建议删除对 Extensions.Storage 组件的引用,但这样做会删除 [BlobTrigger] 属性和其他类型,因此不起作用。相关问题似乎可以追溯到 2018 年,并且是针对旧版本的 Azure Functions 的,这肯定是开箱即用的吧?
感谢任何建议,提前致谢。
只需按以下步骤操作即可:
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" />
我正在尝试创建一个 Azure 函数,它使用 BlobTrigger 来操作一些文件,然后将它们保存回 blob。
为此,我希望能够访问 BlobProperties 对象来检查文件的 Content-Type,以确保我的操作例程支持它。
根据我的理解article,我应该能够简单地在名为 Properties 的方法上添加一个参数,该方法的类型为 BlobProperties 我可以确认这适用于列出的其他元数据类型。
但是,每当我添加属性时,我的应用程序都无法运行并报告以下错误:
The 'Function1' function is in error: Microsoft.Azure.WebJobs.Host: Error indexing method 'Function1'. Microsoft.Azure.WebJobs.Host: Can't bind parameter 'Properties' to type '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
我看到了类似的 post,它建议删除对 Extensions.Storage 组件的引用,但这样做会删除 [BlobTrigger] 属性和其他类型,因此不起作用。相关问题似乎可以追溯到 2018 年,并且是针对旧版本的 Azure Functions 的,这肯定是开箱即用的吧?
感谢任何建议,提前致谢。
只需按以下步骤操作即可:
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" />