You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust实现Azure Function App启动失败:Http Worker连接被拒绝

解决Azure Functions自定义处理器(Rust)无法获取FUNCTIONS_CUSTOMHANDLER_PORT的问题

核心原因

FUNCTIONS_CUSTOMHANDLER_PORT 是Azure Functions运行时动态注入的环境变量,不会显示在门户或Kudu的环境变量列表中。应用启动失败是因为运行时未正确识别自定义处理器配置,导致未注入该变量——你的Rust应用因此使用了默认端口7071,但运行时尝试连接它自动分配的端口(如日志中的42353),最终出现连接拒绝。

解决步骤

1. 配置正确的host.json

必须在应用根目录下的host.json中明确自定义处理器配置,让运行时识别并注入端口变量。示例配置:

{
  "version": "2.0",
  "customHandler": {
    "description": {
      "defaultExecutablePath": "./your-rust-binary",
      "workingDirectory": ".",
      "arguments": []
    },
    "type": "http"
  }
}
  • defaultExecutablePath:填写Rust编译后的二进制文件相对路径(Linux环境无需.exe后缀)
  • type:必须设为http,匹配HTTP触发器类型

2. 检查部署包结构

确保部署文件结构符合Azure Functions要求:

你的函数应用根目录/
├── host.json
├── 触发器文件夹(如HttpTrigger/)
│   └── function.json
└── your-rust-binary  # Rust编译后的可执行文件

若用CI/CD部署,需保证编译后的二进制文件被正确打包,且路径与host.json配置一致。

3. 验证运行时版本

确保Function App使用Azure Functions Runtime 3.x及以上版本(推荐4.x),低版本不支持自定义处理器。可在Azure门户「配置」→「常规设置」中查看和修改。

4. 确保二进制文件权限(Linux环境)

若部署到Linux型Function App,需给Rust二进制文件添加可执行权限,通过Kudu控制台执行:

chmod +x /home/site/wwwroot/your-rust-binary

额外排查建议

  • 本地测试:用func start启动本地运行时,打印日志确认是否正确读取到FUNCTIONS_CUSTOMHANDLER_PORT
  • 部署后检查:在Kudu「进程资源管理器」中查看Rust进程是否运行,以及其监听端口是否与日志中运行时尝试连接的端口一致

内容的提问来源于stack exchange,提问作者mlidal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:52:06