gpt4 book ai didi

azure - 为什么需要向输出绑定(bind)添加 out 参数?

转载 作者:行者123 更新时间:2023-12-02 06:20:48 26 4
gpt4 key购买 nike

假设我的 Azure 函数有此签名:

   [FunctionName("DoStuff")]
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req,
TraceWriter log,
[Queue("output-queue")] string outputQueue)
{
}

只有当我向输出绑定(bind) outputQueue 添加 out 参数时,此方法才适用。我使用的是VS 2017.3.2

Microsoft 示例不使用 out 参数。为什么需要添加 out 参数?

最佳答案

当您的函数对其中一个参数进行赋值时,您需要使用“out”。例如,如果您的参数是字符串、byte[] 或 poco,则需要进行赋值。

以下是文档中需要 out 的一个示例:

#load "..\shared\order.csx"

using System;

public static void Run(Order myQueueItem, out Order outputQueueItem,TraceWriter log)
{
log.Info($"C# Queue trigger function processed order...");
log.Info(myQueueItem.ToString());

outputQueueItem = myQueueItem;
}

如果您的函数正在调用参数上的方法,则不需要使用 out。 Stream、ICollector 和 IAsyncCollector 都属于这一类。以下是两个示例:

public async static Task ProcessQueueMessageAsync(
string blobName,
Stream blobInput,
Stream blobOutput)
{
await blobInput.CopyToAsync(blobOutput, 4096, token);
}

还有:

#load "..\shared\order.csx"

using System.Net;

public static async Task<HttpResponseMessage> Run(Order req, IAsyncCollector<Order> outputQueueItem, TraceWriter log)
{
log.Info("C# HTTP trigger function received an order.");
log.Info(req.ToString());
log.Info("Submitting to processing queue.");

if (req.orderId == null)
{
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
else
{
await outputQueueItem.AddAsync(req);
return new HttpResponseMessage(HttpStatusCode.OK);
}
}

您提到您的示例代码的 IAsyncCollector 参数存在问题。正如其他人所提到的,问题似乎是您缺少 [Queue(..)] 属性。

关于azure - 为什么需要向输出绑定(bind)添加 out 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46123181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com