Docker 对另一个容器的Api调用不';我不能在blazor wasm工作

Docker 对另一个容器的Api调用不';我不能在blazor wasm工作,docker,asp.net-core,asp.net-web-api,blazor-webassembly,docker-networking,Docker,Asp.net Core,Asp.net Web Api,Blazor Webassembly,Docker Networking,我有一个项目,其架构如下: 当blazor webassembly发布的输出(存在于客户端容器中)调用api(在api容器中启动)时,什么也没有发生 它无法接收任何数据 更糟糕的是,blazor客户端容器没有向我提供任何错误 在我的电脑上打开页面:http://localhost:8081/ 工作结果应如下所示: 但它是这样工作的: razor组件中的API调用如下: protected override async Task OnInitializedAsync() { // i

我有一个项目,其架构如下:

当blazor webassembly发布的输出(存在于客户端容器中)调用api(在api容器中启动)时,什么也没有发生

它无法接收任何数据

更糟糕的是,blazor客户端容器没有向我提供任何错误

在我的电脑上打开页面:http://localhost:8081/

工作结果应如下所示:

但它是这样工作的:

razor组件中的API调用如下:

protected override async Task OnInitializedAsync()
{
    // in Debugging
    //people = await Http.GetFromJsonAsync<List<Person>>("http://localhost:8080/api/people");

    // in Publish in Docker
    people = await Http.GetFromJsonAsync<List<Person>>("http://api_container/api/people");
}
为了测试api是否可以在client_容器中访问,我做了这样的测试:

docker exec -it client_container sh
然后在nginx客户端中:

/usr/share/nginx/html # curl http://api_container/api/people
结果是:

奇怪的是,api可以在客户端容器中访问,但razor组件中的api调用失败。

这是客户端容器日志:

如果您感兴趣,可以在这里查看所有代码

抱歉,如果太无聊了:)


谢谢。

请记住,您使用的是Blazor WASM,它与JavaScript一样在客户端运行,我应该注意所有请求,包括api调用(
/api/people
)是在客户端浏览器和计算机中执行的,它们是浏览器无法解析名为
api\u容器的主机的,因此对您的api和
api\u容器的任何请求都会失败,这一点毫不奇怪。

这是一个令人兴奋的时刻!非常感谢你的努力!!!我想因为它在容器中运行,所以它的网络也在容器上!
/usr/share/nginx/html # curl http://api_container/api/people