gpt4 book ai didi

docker - 是否可以将环境变量从主机传递到托管的 blazor wasm 应用程序?

转载 作者:行者123 更新时间:2023-12-04 17:19:54 26 4
gpt4 key购买 nike

我正在像这样从 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 页面扩展到以下内容,以便我们传递环境变量:

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

关于docker - 是否可以将环境变量从主机传递到托管的 blazor wasm 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66827231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com