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

部署在Heroku Docker中的.NET应用无法访问问题求助

解决Heroku Docker部署.NET应用的R10启动超时问题

核心问题分析

日志里的关键错误是:

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

你的应用成功启动并监听了5000端口,但Heroku要求Web进程必须绑定到平台动态分配的$PORT环境变量,而非硬编码的固定端口。你手动设置PORT=5000无效的原因是启动命令里直接指定了5000,没有读取环境变量。

修复步骤

  • 修改启动命令,使用Heroku动态端口
    将启动命令中的硬编码端口替换为$PORT,例如:

    dotnet ./Muapp.dll --urls=http://*:$PORT
    

    如果使用Dockerfile,确保CMD/ENTRYPOINT配置正确读取环境变量:

    # Shell形式
    CMD dotnet ./Muapp.dll --urls=http://*:$PORT
    
    # Exec形式(推荐)
    CMD ["dotnet", "./Muapp.dll", "--urls", "http://*:$PORT"]
    
  • 移除手动设置的PORT变量
    Heroku会自动分配端口,无需手动指定PORT=5000,删除该自定义变量可避免干扰平台的动态分配逻辑。

  • 验证部署结果
    重新部署后,查看日志应显示应用监听Heroku分配的随机端口(而非固定5000),此时R10超时错误会消失,应用可正常访问。

次要警告说明

日志中的DataProtection相关警告不影响应用启动,仅提示密钥存储在容器内部,容器销毁后加密数据会失效。后续可通过配置外部密钥存储解决,但当前优先解决启动超时的核心问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:15:31