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

Docker容器间HTTP请求报错:Cannot assign requested address 求助

问题诊断与解决方案

核心问题

容器内的localhost指向容器自身,而非宿主机。UI容器中请求https://localhost:44328是在尝试访问UI容器自己的44328端口,而非宿主机映射的Service服务端口,这就是报错的根本原因。

解决步骤

1. 修改API请求地址

将UI中的请求地址从https://localhost:44328改为https://my.service:443:

  • my.service是你在Docker Compose中定义的Service服务名,同一Docker网络内的容器可以通过服务名直接访问彼此。
  • 443是Service容器内部的服务端口(对应Compose配置中ports: - "44328:443"的容器侧端口)。

2. 处理HTTPS证书信任问题

.NET开发容器默认使用自签名证书,UI容器可能无法信任Service的证书,可在开发环境做以下配置:

  • 在UI项目的Program.cs中添加代码,允许不安全的HTTPS请求:
if (builder.Environment.IsDevelopment())
{
    builder.Services.AddHttpClient("MyServiceClient", client =>
    {
        client.BaseAddress = new Uri("https://my.service:443");
    })
    .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
    {
        ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true
    });
}

3. 验证网络连通性

进入UI容器内部,执行以下命令测试是否能访问Service:

docker exec -it <ui-container-name> curl https://my.service:443

如果能返回正常响应,说明网络连通性没问题,问题出在应用层配置。

4. 检查Service容器的端口监听配置

确保Service的Dockerfile或环境变量中正确设置了监听端口:

  • 在Dockerfile中添加:
ENV ASPNETCORE_URLS=https://+443
  • 或者在Compose配置中添加环境变量:
services:
  my.service:
    # ...其他配置
    environment:
      - ASPNETCORE_URLS=https://+443

额外建议

建议将两个服务放到同一个Docker Compose文件中管理,简化配置和调试流程:

version: '3.4'
services:
  my.application:
    image: ${DOCKER_REGISTRY-}myapplication
    build:
      context: ./path-to-ui-solution
      dockerfile: MY.Application/Dockerfile
    ports:
        - 44361:443
    networks:
      - srce-network
    environment:
      - ServiceBaseUrl=https://my.service:443

  my.service:
    image: ${DOCKER_REGISTRY-}Myservice
    build:
      context: ./path-to-service-solution
      dockerfile: My.Service/Dockerfile
    ports:
      - "44328:443"
    networks:
      - srce-network
    environment:
      - ASPNETCORE_URLS=https://+443

networks:
  srce-network:
    driver: bridge

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:45:32