Microsoft.Azure.WebJobs.Host:无法将参数'$ return'绑定为布尔型

问题描述 投票:1回答:2

我该如何解决? :/

public static async Task<bool> Run([QueueTrigger("<queueNameHere", Connection = "<connectionHere>")]byte[] myQueueItem, TraceWriter log)

导致错误:

Microsoft.Azure.WebJobs.Host: Error indexing method 'Run'. 
Microsoft.Azure.WebJobs.Host: Cannot bind parameter '$return' to type
Boolean&. Make sure the parameter Type is supported by the binding. If
you're using binding extensions (e.g. ServiceBus, Timers, etc.) make
sure you've called the registration method for the extension(s) in
your startup code (e.g. config.UseServiceBus(), config.UseTimers(),
etc.).
azure-webjobs
2个回答
0
投票

该错误源于您试图将返回类型设置为布尔值(任务)的事实,并且我相信QueueTriggered函数只能具有void的返回类型。因此,只需删除返回类型:

public static async Task Run(...)

您尝试使用返回类型是否有特定目的?如果您试图将状态传达给另一个进程,则应考虑使用另一种方法,例如通过输出绑定将完成的消息放置在另一个队列上,或者更新数据库中的状态,等等。


0
投票

返回类型用于设置函数return的类型,return是使用return属性绑定输出时的形式。

在官方文档中,有关于如何在队列触发功能中设置返回类型的描述。

Usage

通过使用诸如out T之类的方法参数编写单个队列消息paramName。您可以使用方法返回类型代替out参数,并且T可以是以下任何一种类型:

  • 可序列化为JSON的对象
  • 字符串
  • byte []
  • CloudQueueMessage

如果尝试绑定到CloudQueueMessage并获取错误消息,请确保您可以参考正确的Storage SDK版本。

在C#和C#脚本中,使用以下类型:

  • ICollector或IAsyncCollector
  • CloudQueue

因此所有支持类型都在此处列出,因此您必须使用其他类型进行绑定,您可以参考下面的代码。

public static class Function1
    {
        [FunctionName("Function1")]
        [return: Queue("queue")]
        public static async Task<CloudQueueMessage> Run([QueueTrigger("myqueue", Connection = "AzureWebJobsStorage")]WorkItem input, ILogger log)
        {
            string json = string.Format("{{ \"id\": \"{0}\" }}", input.Id);
            log.LogInformation($"C# script processed queue message. Item={json}");
            CloudQueueMessage message = new CloudQueueMessage("test message");
            return message;
        }

        public class WorkItem
        {
            public string Id { get; set; }
        }

    }

[我使用队列触发功能从myqueue获取json数据并将队列消息发送到queue

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.