簡體   English   中英

是否可以將環境變量從主機傳遞到托管的 blazor wasm 應用程序?

[英]Is it possible to pass environment variables from the host to a hosted blazor wasm app?

我正在托管來自這樣的 aspcore 主機的 blazor wasm 應用程序

public void Configure(IApplicationBuilder app)
{
    // ...
    app.UseBlazorFrameworkFiles();
    // ...
}

現在我想用 docker 部署我的應用程序。 我想從環境變量控制 blazor 應用程序后端的地址。

所以我在我的 blazor 項目中設置了wwwroot/appsettings.json ,它的工作方式與預期的一樣。 在運行時讀取值。 但它們不會被主機環境變量覆蓋。

有沒有辦法將值傳遞下去? 我可以讀取主機中的環境變量並以其他方式傳遞它。 但客戶端需要從appsettings.json資源中讀取。

我可能可以不使用appsettings.json文件並創建一個返回字符串的自定義端點。 但我不喜歡這種方法。

您可以在服務器項目中創建一個新的 Razor 頁面,而不是將備用路徑設置為 index.html 文件。 在此頁面中,您呈現客戶端項目的 App 組件。 這個博客非常詳細地解釋了這個過程。 如果您選擇預渲染或不預渲染,過程是相同的。 https://andrewlock.net/enabling-prerendering-for-blazor-webassembly-apps/ 如果您不同意預渲染 Blazor WebAssembly 應用程序,您可以將渲染模式設置為 WebAssembly。

<component type="typeof({NameOfClientProject}.App)" render-mode="WebAssembly" />

然后,您需要在子項目的 App razor 組件中定義一個參數。

[Parameter]
public Hashtable EnvironmentInfo { get; set; }

然后我們將前面的代碼片段 _Host.cshtml 頁面擴展為以下代碼,以便我們傳遞 EnvironmentVariables:

<component param-EnvironmnentInfo='@Environment.GetEnvironmentVariables()' type="typeof(BlazorWAEnvironment.Client.App)" render-mode="WebAssembly" />

暫無
暫無

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

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