.NET服务无法连接到Redis

njthzxwz  于 2022-10-08  发布在  .NET
关注(0)|答案(1)|浏览(224)

我正在尝试获取一个.NET API,以便能够连接到我的扩展坞网络上的Redis示例。以下是我得到的信息:

  • Redis容器:在localhost:6379的自定义扩展底座网络my-network上启动并运行
  • .NET服务:正在尝试在自定义扩展底座网络my-network上启动和运行

(也许?)相关版本控制:

  • Abp.RedisCache 5.4.0
  • StackExchange.Redis 2.1.58

我尝试了所有方法,network inspect,向网络添加和删除两个容器,甚至在我的.NET代码中使用特殊的连接字符串标志resolveDns=true。无论我做什么,我都会得到:

StackExchange.Redis.RedisConnectionException: It was not possible to connect to the redis server(s). UnableToConnect on localhost:6379/Interactive, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: Connecting, mgr: 10 of 10 available, last-heartbeat: never, global: 0s ago, v: 2.1.58.34321

我在这里疯了,Redis已经在扩展底座网络上的localhost:6379启动并运行,为什么.NET不能连接?

是的,我已经通过了一个定制的redis.conf,它也有bind 0.0.0.0

rsl1atfo

rsl1atfo1#

多亏了汉斯·基利安的评论,我终于能够连接上了!

尽管Redis+Docker的教程在使用localhost:6379时似乎是无限的,但事实上,当Redis在Docker网络中运行时,情况并非如此。要查找该IP,例如使用名为redis的容器,可以发出以下命令:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis

您需要将结果IP地址(端口为6379)作为您的连接字符串提供。

TL;DR;

不是:

localhost:6379

但 Docker 为集装箱分配了IP,例如:

172.18.0.7:6379

编辑:您也可以使用容器名称而不是IP,即:

redis:6379

希望这篇文章能帮助任何偶然发现这一点的人。

相关问题