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

Posted

技术标签:

【中文标题】更新到 Microsoft.Net.Functions 3.0.3 后如何正确设置 Azure 队列触发器?【英文标题】:How to correctly setup azure queue trigger after update to Microsoft.Net.Functions 3.0.3? 【发布时间】:2020-05-30 17:15:30 【问题描述】:

这是我原始格式的 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,所以我更改为以下格式: 这是我的更新存储队列触发器设置,也没有触发

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 上,所以我认为不应该有冷启动,我已经破解了队列名称,它的匹配项。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

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

在我的测试 v3 函数中仍然可以使用 bind expression 和 %%,但是如果您使用 3.0.3 函数包,请不要在 .csproj 文件中设置版本,如此文档所示:Visual Studio runtime versions,它将在没有日志的情况下运行。

按照文档设置你的函数后,你仍然遇到问题,你可以尝试捕获异常以获取详细信息,并使用此答案:How to retrieve the LoaderException property? 并分享你的完整代码让我进行测试。

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

【讨论】:

谢谢你帮我解决这个问题,这是正确的答案,我已经按照你给我看的文件重新发布了这个功能,现在一切正常

以上是关于更新到 Microsoft.Net.Functions 3.0.3 后如何正确设置 Azure 队列触发器?的主要内容,如果未能解决你的问题,请参考以下文章

华为悦盒刷机更新到35% 左右就显示更新失败?

git 更新代码到本地

华为手机无法高更新到安卓12

GitLab更新代码到新分支

从版本 3 更新到 4 时,Flyway 更新不会迁移 schema_version 表

git如何更新到指定版本,然后再更新到最新版本