我想在我的azure函数中使用输出队列。我从以下示例代码中获取:
https://docs.microsoft.com/en-us/sandbox/functions-recipes/queue-storage

[FunctionName("BasicQueueOutput")]
public static void Run([TimerTrigger("*/30 * * * * *")]TimerInfo myTimer,
                       TraceWriter log,
                       [Queue("101functionsqueue",Connection = "AzureWebJobsStorage")] out string queueMessage)
{
    log.Info("101 Azure Function Demo - Storage Queue output");

    queueMessage = DateTime.UtcNow.ToString();
}


对于同步方法,它工作正常,但在我的情况下,它是异步方法:

    [FunctionName("FunctionRegisterDomain")]
    public async static Task Run(
        [QueueTrigger("domain-registation", Connection = "StorageConnectionString")]DomainForRegistration queueItem,
        [Queue("domain-add-to-office365", Connection = "StorageConnectionString")]out DomainForRegistration outputQueue,
        ILogger log)


我得到一个错误:


  异步方法不能具有ref,in或out参数


当然,我可以做到:

    [Queue("domain-add-to-office365", Connection = "StorageConnectionString")]CloudQueue outputQueue,


然后使用它:

await outputQueue.AddMessageAsync(new CloudQueueMessage(JsonConvert.SerializeObject(queueItem)));


但是我想通过绑定到队列消息来做到这一点

最佳答案

您正在寻找IAsyncCollector<T>从外部参数更改为该参数。改为使用“ ICollector<string> messages”或“ IAsyncCollector<string>”,而不是“输出字符串消息”,然后将消息添加到正文中的集合中。

关于c# - Azure功能:异步方法和输出参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54391454/

10-11 02:35