gpt4 book ai didi

c# - 如何将队列触发的 Azure Function 绑定(bind)到自定义对象

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

在编写队列触发的 Azure Function 时,我了解到,默认情况下,它需要一个 Base-64 编码的字符串,但它也可以绑定(bind)到 POCO。

Access the message data by using a method parameter such as string paramName. TheparamName is the value specified in the QueueTriggerAttribute. You can bind to any ofthe following types:

  • Plain-old CLR object (POCO)
  • string byte[]
  • QueueMessage

When binding to an object, the Functions runtime tries to deserialize the JSON payloadinto an instance of an arbitrary class defined in your code.

[documentation]

当我尝试这个时,异常(exception)是......

The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.

有趣的是,我读到我应该引用 Microsoft.Azure.WebJobs.Extensions.Storage.Queues,但我找不到任何有关如何使用它的示例或文档。

我引用了 NuGet 包,Visual Studio 现在将 QueueTriggerAttribute 下划线为不明确的,因为它位于两个命名空间中;当我尝试完全限定它时,我找不到它。

在几个地方,我发现博主暗示使用 ...Extensions.Storage... 来绑定(bind)自定义对象,但我已经搜索了一个多小时,但我无法找到有关如何实现此目标的任何示例或清晰文档。

我错过了一些简单的事情吗?

最佳答案

While writing a queue-triggered Azure Function I read that, by default, it expects a base-64 encoded string, but that it can also bind to a POCO.

正确,但为了绑定(bind)到 POCO,消息仍然必须是包含有效 JSON 的 Base64 编码字符串,可用于反序列化为 POCO 类的实例。

您可以使用存储资源管理器等进行尝试:

enter image description here

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace FunctionApp3
{
public class Function
{
[FunctionName("Function")]
public void Run([QueueTrigger("queue", Connection = "MyConn")] MyObject myQueueItem, ILogger log)
{
log.LogInformation($"C# Queue trigger function processed: {myQueueItem.Name}");
}
}

public class MyObject
{
public string Name { get; set; }
}
}

关于c# - 如何将队列触发的 Azure Function 绑定(bind)到自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75895374/

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