System.Net.Http.HttpRequestException:无法分配请求的地址 - 本地主机中的 2 个 .net 核心 Web 应用程序之间通信时出错
Posted
技术标签:
【中文标题】System.Net.Http.HttpRequestException:无法分配请求的地址 - 本地主机中的 2 个 .net 核心 Web 应用程序之间通信时出错【英文标题】:System.Net.Http.HttpRequestException: Cannot assign requested address - error while communicating between 2 .net core web apps in localhost 【发布时间】:2021-08-24 19:22:01 【问题描述】:我是 docker 新手,我有一个包含 2 个 dotnet 核心项目的 Visual Studio 解决方案 - UI 和 API。我已经为这两个项目添加了 docker 支持,并且它们在我调试的任何时候都能正常工作。现在他们有一个 http 客户端从网络调用 api,它突然开始给出“无法分配请求的地址”错误。
这里的奇怪之处在于,此错误仅来自一台 PC。我有第二台 PC 仍然可以顺利运行项目。其他团队成员都没有看到此错误。
我已经修剪了所有容器和图像,但这并没有帮助。 我没有使用 docker-compose,所以我在相关问题上找到的答案对我不起作用。
文章 here 解释了 docker 中 localhost 的解释方式有何不同,但我不确定如何使他的解决方案适合我。
这个问题在其他电脑上不会发生,这让我很困惑。
注意:我不确定我需要分享代码的哪一部分,因为我不知道与此问题相关的内容。
【问题讨论】:
【参考方案1】:我在使用localhost
url 创建客户端时遇到了同样的问题。我用http://host.docker.internal:5001
替换了http://localhost:5001
,它成功了。
【讨论】:
这个解决方案对我有用;您能否提供有关其为何有效的任何详细信息或参考资料? 其实我也想知道:) 跟docker的工作原理有关。在 docker 中启动 project1 时,它会映射到本地主机上的某个端口(例如 5001),启动 project2 时,它会映射到本地主机上的另一个端口。您可以从浏览器或 CLI 或 visualstudio 或任何程序访问这两个应用程序,因为这些程序在您的本地主机上运行。当您想从 docker 内的一个应用程序连接到 docker 内的另一个应用程序时,就会出现问题,他们在绑定到 localhost 的端口下看不到自己。 Dorin 发布的是一种直接访问 docker 网络的解决方法,它只适用于 windows。 多么好的解决方案 - 不再需要将 url 映射到 localhost。谢谢。以上是关于System.Net.Http.HttpRequestException:无法分配请求的地址 - 本地主机中的 2 个 .net 核心 Web 应用程序之间通信时出错的主要内容,如果未能解决你的问题,请参考以下文章