簡體   English   中英

Api 調用另一個容器在 blazor wasm 中不起作用

[英]Api call to another container doesn't work in blazor wasm

我有一個項目,其架構是這樣的:

在此處輸入圖像描述

當blazor webassembly發布output,它存在於client_container (nginx高山鏡像)中,調用api,在api_container中沒有任何反應。

它無法接收任何數據。

更糟糕的是,blazor client_container 沒有為我提供任何錯誤。

在我的電腦上打開頁面: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");
}

這些是 docker 運行命令:

docker run -p 8080:80 --rm --name api_container --network store_network parsalotfy/store_api
docker run -p 8081:80 --rm --name client_container --network store_network parsalotfy/store_client

為了測試 api 是否可以在 client_container 中訪問,我做了這樣的測試:

docker exec -it client_container sh

然后在 nginx client_countainer 中:

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

這是結果:

在此處輸入圖像描述

奇怪的是 api 可以在 client_container 中訪問,但是 razor 組件中的 api 調用失敗。

這是 client_container 日志:

在此處輸入圖像描述

如果您有興趣,可以查看github中的所有代碼

對不起,如果它太無聊:)

謝謝你。

考慮到這一點,您正在使用 Blazor WASM,它像 JavaScript 一樣在客戶端運行,我應該注意所有請求,包括 api 瀏覽器調用/api/people都可以在客戶端執行'不解析名為api_container的主機,所以毫不奇怪,對您的 api 和api_container的任何請求都會失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM