本地Azurite环境下Azure函数队列输出的连接配置问题
配置
MyStorageConnectionAppSetting的缺失步骤 错误提示说明Azure Functions找不到对应名称的存储连接字符串配置项,以下是本地开发和云部署场景的配置步骤:
本地开发(Azurite模拟器)
- 找到函数项目根目录的
local.settings.json文件,若不存在则新建该文件 - 在
Values节点中添加连接字符串配置,有两种可选方式:- 方式一(匹配自动前缀规则):
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "AzureWebJobsMyStorageConnectionAppSetting": "UseDevelopmentStorage=true" } } - 方式二(跳过自动前缀):
先修改代码中的connection参数为@MyStorageConnectionAppSetting:
再在const queueOutput = output.storageQueue({ queueName: 'outqueue', connection: '@MyStorageConnectionAppSetting', });local.settings.json中添加:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "MyStorageConnectionAppSetting": "UseDevelopmentStorage=true" } }
UseDevelopmentStorage=true是Azurite的默认连接字符串,若你自定义了Azurite的端口(比如启动时指定了--queueHost),需替换为对应连接字符串,示例:DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1; - 方式一(匹配自动前缀规则):
部署到Azure云环境
- 登录Azure门户,进入你的函数应用
- 切换到配置 > 应用程序设置页面
- 点击新建应用程序设置,根据你选择的配置方式添加:
- 若用方式一:名称填
AzureWebJobsMyStorageConnectionAppSetting,值填你的Azure存储账户连接字符串(可在存储账户的访问密钥页面获取) - 若用方式二:名称填
MyStorageConnectionAppSetting,值填存储账户连接字符串,同时确保代码中connection参数为@MyStorageConnectionAppSetting
- 若用方式一:名称填
- 保存设置后重启函数应用
内容的提问来源于stack exchange,提问作者Kris Swat
相关产品推荐
相关产品推荐

