Microsoft. Azure .WebJobs.Host: Невозможно привязать параметр '$ return' к типу Boolean - PullRequest
1 голос
/ 04 марта 2020

Как мне это исправить? : /

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.).

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Тип возврата используется для установки функции return type, return - это когда вы используете свойство return для привязки выхода.

В официальном do c есть описание того, как установить тип возвращаемого значения в функции триггера очереди.

Использование :

Запись одного сообщения очереди с использованием параметра метода, такого как out T paramName. Вы можете использовать метод возвращаемого типа вместо параметра out, и T может быть любого из следующих типов:

  • Объект, сериализуемый как JSON
  • string
  • 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; }
        }

    }

Я использую функцию триггера очереди, чтобы получить json данных из myqueue и отправить сообщение очереди в queue.

enter image description here

0 голосов
/ 05 марта 2020

Ошибка связана с тем, что вы пытаетесь установить тип возвращаемого значения как Boolean (Task), и я считаю, что функции QueueTriggered могут иметь только возвращаемый тип void. Так что просто удалите тип возврата:

public static async Task Run(...)

Была ли конкретная c цель в вашей попытке получить тип возврата? Если вы пытаетесь передать статус другому процессу, то вам следует рассмотреть альтернативный метод, такой как помещение завершенного сообщения в другую очередь с помощью привязки вывода или обновление статуса в БД и т. Д. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...