VsCode 开发容器之间的 SignalR 使用默认桥接网络

SignalR between VsCode dev containers using default bridge network

如果我在 VsCode 中创建两个 ASP 核心 Web 服务,并在其中一个中实现 SignalR 集线器,而另一个则连接到该集线器(Dotnet 5、SignalR 客户端库 5.11)。这很好用。我可以将这些服务推送到 Azure,它仍然可以正常工作。

但是,如果我在 VsCode 开发容器中本地打开这些 Web 服务,并将它们配置为使用默认 Docker 桥接网络和默认转发端口进行连接,我会得到一个 Connection Refused HubConnection.StartAsync 调用异常。

为什么会这样,我该如何解决?

我尝试了一些方法,使用 http 和 https 端口,在客户端服务中禁用 SSL 验证,但目前没有任何效果。我想我需要一些信息来说明为什么这首先不起作用,然后我才有很大的机会提出解决方案。

问题是 Kestrel 仍在侦听 Docker 容器内的默认网络接口,我需要重新配置它以侦听所有接口以使连接正常工作。

所以在 launchsettings.json 中,我需要将 applicationUrl"https://localhost:5003;http://localhost:5002" 更改为 "https://0.0.0.0:5003;http://0.0.0.0:5002",然后一切正常。