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

MacOS上.NET Core 6连接Docker中Cosmos模拟器遇408超时

.NET连接Docker中Cosmos模拟器出现408超时(Intel Mac)的排查方案

1. 确认端口映射与API端口正确性

  • Cosmos模拟器的管理界面端口是8081,但.NET SDK调用数据库API用的是10250端口(SQL API),别搞混!先检查docker-compose是否映射了所有必要端口:
    services:
      cosmosdb:
        image: mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator
        ports:
          - "8081:8081"
          - "10250:10250"
          - "10251:10251"
          - "10252:10252"
          - "10253:10253"
          - "10254:10254"
        environment:
          - AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10
          - AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE=true
    
  • 用curl测试API端口连通性:curl -vk https://localhost:10250,如果返回含_self字段的JSON响应,说明端口通;如果超时,直接排查Docker网络或Mac防火墙。

2. 禁用Mac防火墙与第三方安全工具

  • 临时关闭系统防火墙:打开「系统偏好设置」→「安全性与隐私」→「防火墙」,点击「关闭防火墙」。
  • 如果安装了Little Snitch、CleanMyMac等第三方安全软件,临时禁用其网络拦截功能,这类工具常拦截本地Docker容器的出站请求。

3. 修复.NET代码中的证书验证与连接配置

  • Cosmos模拟器用自签名证书,Mac上.NET默认会拒绝,需在创建CosmosClient时禁用证书验证:
    var connectionString = "AccountEndpoint=https://localhost:10250/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;";
    var client = new CosmosClient(connectionString, new CosmosClientOptions
    {
        HttpClientFactory = () =>
        {
            var handler = new HttpClientHandler();
            handler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
            return new HttpClient(handler);
        },
        ConnectionMode = ConnectionMode.Gateway // 网关模式更适配Mac本地网络环境
    });
    
  • 连接字符串里的Endpoint必须指向10250端口,而非8081。

4. 调整Docker网络绑定策略

  • 在docker-compose的端口映射中添加0.0.0.0,确保端口绑定到所有网卡:
    ports:
      - "0.0.0.0:8081:8081"
      - "0.0.0.0:10250:10250"
    
  • 尝试切换网络模式为host(Mac上Docker的host模式需注意:容器会共享主机网络,但部分端口可能冲突):
    network_mode: "host"
    

5. 排查本地DNS与localhost解析问题

  • 把连接字符串中的localhost替换为127.0.0.1,避免localhost解析异常:AccountEndpoint=https://127.0.0.1:10250/;...
  • 清理Mac DNS缓存:
    sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:06:32