Azure Functions:Blob 存储模拟器在移动到 VS2022 后停止工作

Azure Functions: Blob Storage emulator stopped working after moving to VS2022

我有一个旧的 Azure Functions 项目 (v3)。它包含几个定时器触发的函数。他们停止了 VS2022 的工作。你可以看到下面的日志。如果我通过 VS2022 创建一个新的 Functions 项目,它将正常工作。看起来 Azurite 也可以正常启动。设置“AzureWebJobsStorage”等于“UseDevelopmentStorage=true”。我能做什么?

[2022-01-06T10:17:15.675Z] Host lock lease acquired by instance ID '000000000000000000000000DC2A3C3E'.
[2022-01-06T10:17:35.554Z] The listener for function 'Function1' was unable to start.
[2022-01-06T10:17:35.556Z] The listener for function 'Function1' was unable to start. Azure.Storage.Blobs: Service request failed.
[2022-01-06T10:17:35.557Z] Status: 500 (Internal Server Error)
[2022-01-06T10:17:35.557Z]
[2022-01-06T10:17:35.558Z] Headers:
[2022-01-06T10:17:35.559Z] Server: Azurite-Blob/3.14.1
[2022-01-06T10:17:35.560Z] ETag: "0x234B8B049DD4280"
[2022-01-06T10:17:35.561Z] x-ms-blob-type: BlockBlob
[2022-01-06T10:17:35.562Z] x-ms-lease-state: available
[2022-01-06T10:17:35.562Z] x-ms-lease-status: unlocked
[2022-01-06T10:17:35.563Z] x-ms-client-request-id: a3bc0141-7bcb-420c-84a9-eadf86f8c685
[2022-01-06T10:17:35.564Z] x-ms-request-id: 88474d4b-bc15-4f45-95d5-0a01682d883d
[2022-01-06T10:17:35.565Z] x-ms-version: 2020-10-02
[2022-01-06T10:17:35.566Z] Accept-Ranges: bytes
[2022-01-06T10:17:35.566Z] Date: Thu, 06 Jan 2022 10:17:35 GMT
[2022-01-06T10:17:35.567Z] x-ms-server-encrypted: true
[2022-01-06T10:17:35.570Z] x-ms-blob-content-md5: jhxvLoUrRfc2dXn/gXokig==
[2022-01-06T10:17:35.570Z] Connection: keep-alive
[2022-01-06T10:17:35.571Z] Keep-Alive: REDACTED
[2022-01-06T10:17:35.572Z] Last-Modified: Tue, 28 Dec 2021 11:10:44 GMT
[2022-01-06T10:17:35.573Z] Content-Length: 115
[2022-01-06T10:17:35.574Z] Content-Type: application/octet-stream
[2022-01-06T10:17:35.574Z] Content-MD5: jhxvLoUrRfc2dXn/gXokig==

更新
我在同一个项目中添加了一些新功能。他们工作正常。我更改了函数和方法名称,旧函数也开始工作。看起来它缓存了某个地方的名字。我试过干净重建,但没有帮助。我不知道为什么它不适用于旧名称。

  1. Visual Studio 2019 中创建了 Azure Functions v3 项目 以及对本地项目和 运行ning:

  2. 相同的代码在 VS 2022 和 运行 中打开了本地函数:

Microsoft Documentation 中所述,Azurite 自动随 VS 2022.

提供

现在在 VS 2022 中打开 Azure Functions v3 项目(早期在 VS 2019 中创建)时,加载依赖项后可能会在输出对话框中显示以下消息:

不过,Azure 存储模拟器 是 运行 Windows 中任何 azure 函数项目所必需的,它需要安装在系统中。

确保安装了 Azure 存储模拟器,并且 azurite 是 VS 2022 中包含的未来存储模拟器平台。如果您使用的是更早版本 Visual Studio,则需要使用任一节点安装 Azurite包管理器、DockerHub 或通过克隆以下 documentation.

中给出的 Azurite github 存储库

我能够通过使用 Azure 存储资源管理器并删除本地存储 blob 容器中 azure-webjobs-hosts 下的相关 blob 文件夹来解决这个问题

根文件夹位于: Local & Attached > Storage Accounts > (Emulator - Default Ports) > Blob Containers -> azure-webjobs-hosts

确保项目已打开,否则存储资源管理器可能无法加载容器。

删除后,问题功能如预期一样开始运行