本地运行Blob Trigger Azure函数时遇Azure.Storage.Queues空值错误
本地调试Azure Blob Trigger函数时遇"Value cannot be null"异常
异常信息
发生未处理的异常。主机正在关闭。
Functions:
Azure.Storage.Queues: Value cannot be null. (Parameter 'value').

代码情况
使用模板生成的基础Blob Trigger函数代码:
using System.IO; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Host; using Microsoft.Extensions.Logging; namespace Wpm; public class ThumbnailFunction { [FunctionName(nameof(ThumbnailFunction))] public void Run([BlobTrigger("wpm/{name}", Connection = "wpmStorageConn")]Stream myBlob, string name, ILogger logger) { logger.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); } }
已做排查
- 推测是连接字符串问题,但已确认
secrets.json中的连接字符串与Azure Storage Explorer及其他服务中使用的一致,连接字符串名称为wpmStorageConn。 - 尝试了多种
local.settings.json配置,当前内容如下:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "wpmStorageConn": "<<HereIsMyConnectionString>>", "ConnectionStrings:wpmStorageConn": "<<HereIsMyConnectionString>>", "AzureWebJobsSecretStorageType": "files" }, "ConnectionStrings": { "wpmStorageConn": "<<HereIsMyConnectionString>>", "ConnectionStrings:wpmStorageConn": "<<HereIsMyConnectionString>>" } }
secrets.json内容:
{ "ConnectionStrings:wpmStorageConn": "<<HereIsMyConnectionString>>", "ConnectionStrings:wpmStorageConn:blob": "https://wpmstorage11.blob.core.windows.net/", "ConnectionStrings:wpmStorageConn:queue": "https://wpmstorage11.queue.core.windows.net/", "wpmStorageConn": "UseDevelopmentStorage=true" }
解决步骤
核心问题
- Azure Functions触发器的连接字符串必须放在
local.settings.json的Values节点下,ConnectionStrings节点用于EF等数据库场景,函数运行时不会从该节点读取触发器配置。 secrets.json与local.settings.json配置冲突:secrets.json中wpmStorageConn设为UseDevelopmentStorage=true,但实际需要使用云端存储连接字符串,运行时优先读取secrets.json导致异常。- 配置文件存在冗余项,干扰运行时读取逻辑。
具体修复
- 清理
local.settings.json:保留必要配置,将wpmStorageConn放在Values节点下,删除所有冗余项:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "wpmStorageConn": "<<你的云端存储连接字符串>>", "AzureWebJobsSecretStorageType": "files" } }
- 修正
secrets.json:将wpmStorageConn的值改为与云端一致,确保配置统一:
{ "ConnectionStrings:wpmStorageConn": "<<你的云端存储连接字符串>>", "ConnectionStrings:wpmStorageConn:blob": "https://wpmstorage11.blob.core.windows.net/", "ConnectionStrings:wpmStorageConn:queue": "https://wpmstorage11.queue.core.windows.net/", "wpmStorageConn": "<<你的云端存储连接字符串>>" }
- 验证连接字符串格式:确保使用完整的Azure存储连接字符串,格式示例:
DefaultEndpointsProtocol=https;AccountName=wpmstorage11;AccountKey=xxx;EndpointSuffix=core.windows.net,不要仅填写Blob服务URL。 - 重启调试环境:修改配置后,重启Visual Studio或Azure Functions Core Tools,确保配置生效。
内容的提问来源于stack exchange,提问作者Muhammad Ashhar Hasan
相关产品推荐
相关产品推荐

