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

.NET 8 API部署Docker遇Error: read ECONNRESET问题求助

.NET 8 API Docker部署出现ECONNRESET错误的解决方案

问题背景

使用.NET 8开发的API,本地通过Kestrel运行时正常访问,通过Rider+Docker Compose部署后,调用API出现如下错误:

Error: read ECONNRESET

API可正常连接Postgres容器,EF迁移能正常执行,宿主机也能通过localhost:5432连接Postgres,但容器内API无法被宿主机访问。

核心原因

Kestrel默认绑定了容器内部的localhost回环地址,仅允许容器内部访问,宿主机通过端口映射无法连接到服务。

修复步骤

1. 修改appsettings.json的监听地址

将配置中的urls从http://localhost:5068改为http://+:5068,让Kestrel监听容器内所有网络接口:

{
  "ConnectionStrings": {
    "SweetNotes": "Server=sweetnotes.db;Port=5432;Database=SweetNotes;User Id=[USER];Password=[PASSWORD];"
  },
  "urls": "http://+:5068",
  "Kestrel": {
    "EndpointDefaults": {
      "Protocols": "Http1AndHttp2"
    }
  },
  "CorsSettings": {
    "FrontendOrigin": "http://localhost:3050"
  }
}

2. 确保Docker环境变量覆盖配置

原docker-compose.yml已设置ASPNETCORE_URLS=http://+:5068,但Rider自动生成的override配置可能未继承该变量,需手动添加:

services:
  sweetnotes.api:
    # 保留原有配置
    environment:
      # 原有环境变量
      DOTNET_USE_POLLING_FILE_WATCHER: "true"
      RIDER_DEBUGGER_LOG_DIR: "/var/opt/rider-debugger"
      RESHARPER_LOG_CONF: "/etc/opt/rider-debugger/backend-log.xml"
      # 添加以下行确保地址配置生效
      - ASPNETCORE_URLS=http://+:5068

3. 验证容器内监听状态

进入API容器,检查端口监听情况:

# 进入容器
docker exec -it SweetNotes.Api bash
# 安装网络工具(若容器未预装)
apt-get update && apt-get install -y net-tools
# 检查5068端口监听
netstat -tulpn | grep 5068

确认输出显示0.0.0.0:5068(监听所有接口),而非127.0.0.1:5068(仅本地回环)。

4. 重启容器测试

执行命令重建并重启容器:

docker-compose down && docker-compose up --build -d

访问http://localhost:5068验证API是否正常响应。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:00:58