更新到 Microsoft.Net.Functions 3.0.3 后如何正确设置 azure 队列触发器?

How to correctly setup azure queue trigger after update to Microsoft.Net.Functions 3.0.3?

这是我的 azure 存储队列触发器函数的原始格式,它用于工作,但是在我将 Microsoft.Net.Functions NuGet 包从 1.0.24 更新到 3.0.3 后,将 zip 部署更改为 web 部署,并做了发布,此设置已停止工作。

[FunctionName("FunctionEmailQueueTrigger")]
public static async Task Run([QueueTrigger("%emailqueue%")]string myQueueItem, ILogger log)
{
        //....Actions
}```

所以,我认为是设置格式从 1.0.24 更改为 3.0.3,所以我更改为这种格式: 这是我的更新存储队列触发器设置,它也不是 fire

public static async Task Run([QueueTrigger("emailqueue", Connection = "DefaultEndpointsProtocol=https;AccountName=name;AccountKey=XXXXXXX;EndpointSuffix=core.windows.net")]string myQueueItem, ILogger log)
{
        //....Actions
}```

当我检查函数并在 azure 上单击它时,它抛出一个错误:

错误:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性 以获取更多信息。

它使用标准计划部署在 Azure 上,所以我认为不应该有冷启动,我已经检查了队列名称,它的匹配项。

感谢您的帮助。

现在我可以从你的代码中得到的问题是你的 Connection,这应该是你的存储帐户连接名称而不是连接字符串,如果在你的本地它应该是 [=11= 中的连接],如果天蓝色,请转到 Configuration 检查您的存储帐户设置密钥。

并且在我的测试 v3 函数中仍然可以使用 bind expression with %%, however if you use 3.0.3 function package, not set the version in the .csproj file like this doc shows:Visual Studio runtime versions,它将 运行 没有日志。

按照文档设置您的功能后,您仍然遇到问题,您可以尝试捕获异常以通过以下答案获取详细信息:How to retrieve the LoaderException property? 并分享您的完整代码让我有一个测试。

希望这对您有所帮助,如果您还有其他问题,请随时告诉我。