本地运行IntelliJ创建的Java Azure Blob Trigger函数遇连接拒绝错误
Java Azure Function Blob Trigger 本地运行连接失败解决
问题描述
用IntelliJ IDEA创建Java版Azure Function Blob Trigger函数,本地运行时触发连接失败错误,日志如下:
[2022-07-21T11:29:11.318Z] 函数'Functions.BlobTriggerFunction'的监听器无法启动。 [2022-07-21T11:29:11.319Z] 函数'Functions.BlobTriggerFunction'的监听器无法启动。Microsoft.Azure.Storage.Common: 无法建立连接,因为目标机器主动拒绝了它。System.Net.Http: 无法建立连接,因为目标机器主动拒绝了它。System.Private.CoreLib: 无法建立连接,因为目标机器主动拒绝了它。 [2022-07-21T11:29:12.311Z] 发生未处理的异常,主机正在关闭。 [2022-07-21T11:29:12.312Z] Microsoft.Azure.Storage.Common: 无法建立连接,因为目标机器主动拒绝了它。System.Net.Http: 无法建立连接,因为目标机器主动拒绝了它。System.Private.CoreLib: 无法建立连接,因为目标机器主动拒绝了它。
对应函数代码:
public class BlobTriggerFunction { /** * 当在指定路径检测到新的或更新的Blob时,将调用此函数。 * Blob内容将作为输入提供给此函数。 */ @FunctionName("BlobTriggerFunction") @StorageAccount("AzureWebJobsStorage") public void run( @BlobTrigger(name = "content", path = "ys01/{name}", dataType = "binary", connection = "AzureWebJobsStorage") byte[] content, @BindingName("name") String name, final ExecutionContext context ) { context.getLogger().info("Java Blob trigger function processed a blob. Name: " + name + "\n Size: " + content.length + " Bytes"); System.out.println("logger "); }
解决步骤
- 检查本地存储模拟器是否运行:Blob Trigger本地运行依赖Azure存储模拟器(Windows用Azure Storage Emulator,跨平台用Azurite)。
- Windows:打开Azure Storage Emulator,确认服务处于启动状态;
- 跨平台:打开终端执行
azurite启动模拟器,确保进程正常运行。
- 验证连接字符串配置:打开项目中的
local.settings.json文件,检查AzureWebJobsStorage的取值。本地模拟器默认连接字符串为:
若自定义了模拟器端口,需同步更新连接字符串中的端口信息。"AzureWebJobsStorage": "UseDevelopmentStorage=true" - 排查防火墙/代理干扰:本地防火墙或代理可能阻断了函数与模拟器的连接。临时关闭防火墙测试,或配置代理允许访问模拟器默认端口(10000、10001、10002)。
- 确认目标Blob容器存在:代码中指定的
ys01容器需要提前在模拟器的Blob存储中创建,未创建的话手动在模拟器对应的存储管理界面新建该容器。 - 更新相关工具版本:IntelliJ的Azure Functions插件或本地Functions Core Tools版本过低可能引发兼容性问题,更新到最新版本后重新运行函数。
内容的提问来源于stack exchange,提问作者YASHI
相关产品推荐
相关产品推荐

