System.Net.Http.HttpRequestException:无法分配请求的地址 - 本地主机中的 2 个 .net core Web 应用程序之间通信时出错

Yus*_*diq 28 dotnet-httpclient docker .net-core docker-compose asp.net-core

我是 docker 新手,我有一个包含 2 个 dotnet 核心项目的 Visual Studio 解决方案 - UI 和 API。我已经为这两个项目添加了 docker 支持,并且在我调试时它们都可以正常工作。现在他们有一个 http 客户端可以从网络调用 api,但它突然开始给出“无法分配请求的地址”错误。

奇怪的是,这个错误只出现在一台电脑上。我有第二台电脑,仍然可以顺利运行项目。其他团队成员都没有看到此错误。

我已经修剪了所有容器和图像,但这没有帮助。我没有使用 docker-compose,所以我在相关问题上找到的答案对我不起作用。

这里的文章解释了 localhost 在 docker 中如何以不同的方式解释,但我不确定如何使他的解决方案为我工作。

事实上,这个问题在其他电脑上没有发生,这才是真正让我困惑的地方。

注意:我不确定需要共享代码的哪一部分,因为我不知道与此问题相关的内容。

Dor*_*aba 46

使用 url 创建客户端时我遇到了同样的问题localhost。我替换http://localhost:5001http://host.docker.internal:5001并且它有效。

  • 这和docker的工作原理有关。当在docker中启动project1时,它被映射到本地主机上的某个端口(例如5001),当启动project2时,它被映射到本地主机上的另一个端口。您可以从浏览器或 CLI 或 Visualstudio 或任何程序访问这两个应用程序,因为这些程序在您的本地主机上运行。当您想要从 docker 内的一个应用程序连接到 docker 内的另一个应用程序时,就会出现问题,它们在绑定到 localhost 的端口下看不到自己。Dorin 发布的是直接访问 docker 网络的解决方法,它仅适用于 Windows。 (4认同)
  • 我在 Linux 上遇到了同样的问题。事情来自 docker 容器内部 localhost 指的是容器本身。所以我们必须使用主机IP地址而不是localhost。就我而言,它是 172.17.0.1。致谢:https://forums.docker.com/t/localhost-and-docker-compose-networking-issue/23100 (4认同)