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

Aspire.NET 9中Windows虚拟机无法连接Mac Redis的求助

解决Windows虚拟机中Aspire.NET 9应用无法连接Mac端Docker Redis的问题

核心问题

Windows虚拟机内的Aspire应用默认用localhost访问Redis,但Redis运行在Mac的Docker容器中,localhost对Win虚拟机而言指向自身而非Mac,因此需要将连接端点改为Mac的内网IP,并调整Aspire的服务配置逻辑。


解决方案步骤

1. 获取Mac的内网IP

在Mac终端执行命令获取当前内网IP:

ipconfig getifaddr en0

记录返回的IP(例如192.168.3.10)。

2. 确认Mac端Redis容器的端口映射

打开Mac的Docker Desktop,找到Aspire创建的cache Redis容器,查看端口映射:

  • 容器内端口为6379,对应Mac宿主机的端口(例如50693),记录该宿主机端口。

3. 修改Aspire宿主项目代码,连接外部Redis

将原来自动创建Redis容器的代码,改为直接连接Mac上已有的Redis实例:

var builder = DistributedApplication.CreateBuilder(args);

// 替换AddRedis为AddExternalRedis,指定Mac的IP和Redis宿主机端口
var cache = builder.AddExternalRedis("cache")
    .WithConnectionString($"redis://192.168.3.10:50693"); // 替换为你的Mac IP和Redis端口

var apiService = builder.AddProject<Projects.AspireApp1_ApiService>("apiservice");

builder.AddProject<Projects.AspireApp1_Web>("webfrontend")
    .WithExternalHttpEndpoints()
    .WithReference(cache)
    .WithReference(apiService);

builder.Build().Run();

4. 确保Windows虚拟机与Mac的网络连通性

  • 检查Parallels网络模式:设置为共享网络或桥接网络,确保Win虚拟机与Mac处于同一内网网段。
  • 在Windows虚拟机的PowerShell中测试端口连通性:
    Test-NetConnection 192.168.3.10 -Port 50693
    
    如果连接失败,检查Mac的防火墙是否允许该端口的入站连接(在Mac系统设置→网络→防火墙中添加端口例外)。

5. 移除无效的Services配置

之前修改appsettings.json的Services节点无意义,Aspire的Services配置用于服务发现,而非直接指定外部服务连接,删除该配置即可。

6. (可选)若需在Windows端管理Mac的Docker容器

如果需要Windows端的Aspire直接操作Mac的Docker引擎(例如启动其他容器服务),需:

  • 在Mac终端执行socat暴露Docker API到Mac的内网IP:
    socat TCP-LISTEN:2376,reuseaddr,fork,bind=192.168.3.10 UNIX-CONNECT:/var/run/docker.sock
    
  • 在Windows虚拟机中设置环境变量:
    setx DOCKER_HOST "tcp://192.168.3.10:2376"
    

验证

启动Windows端的Aspire应用,检查Web和API服务的日志,确认Redis连接正常。若仍报错,排查以下点:

  • Redis容器的端口映射是否正确
  • Mac/Windows的防火墙是否拦截了端口通信
  • 连接字符串中的IP和端口是否与实际一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:23:16