[英]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.