我的Azure函数中的博客绑定失败,并显示“不存在...的绑定参数”

时间:2019-07-20 05:45:32

标签: azure binding azure-functions

我有C#Azure函数。

  [FunctionName("MyFunction")]
    public static void Run(
        [QueueTrigger("my-queue")]MyClass item
        , [Blob("report-streams/{name}", FileAccess.Write)] Stream reportStream)
    {

但是我得到了错误:

 Run: Microsoft.Azure.WebJobs.Host: Error indexing method 'MyFunction.Run'. Microsoft.Azure.WebJobs.Host: No binding parameter exists for 'name'.

理想情况下,我想将名称绑定到属性item.Id,但找不到解决方案。

2 个答案:

答案 0 :(得分:0)

我认为这不可能直接实现。但是,您应该能够在运行时使用绑定来实现。 https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#single-attribute-example

string id = item.id;// retrieve here from your item
using (var writer = binder.Bind<TextWriter>(new BlobAttribute(
                $"report-streams/{id}", FileAccess.Write)))
    {
        writer.Write("Hello World!");
    };

答案 1 :(得分:0)

Azure函数支持将Trigger metadata绑定为C#中的输入参数。并且属性包括ID。因此,只需在输入路径中将ID与{Id}绑定,即可使用。以下是我的测试。

         public static void Run(
            [QueueTrigger("myqueue", Connection = "AzureWebJobsStorage")]string myQueueItem, 
            [Blob("blobcontainer/{Id}", FileAccess.Write)]Stream reportStream,
            ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
        }

这是具有ID的队列。

enter image description here

这是功能控制台输出和blob容器输出。

enter image description here

enter image description here

希望这可以为您提供帮助。