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