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



我正在像这样的aspcore主机上托管一个blazor-wasm应用程序

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

现在我想用docker部署我的应用程序。我想从一个环境变量中控制blazor应用程序后端的地址。

因此,我在我的blazor项目中设置了wwwroot/appsettings.json,它的工作与预期的一样。值在运行时读取。但是它们不会被宿主环境变量所覆盖。

有没有一种方法可以直接传递一个值?我可以读取主机中的环境变量,然后以其他方式将其传递下去。但是客户端需要从appsettings.json资源中读取它。

我可能可以在不使用appsettings.json文件的情况下执行此操作,并创建一个返回字符串的自定义端点。但我不喜欢这种做法。

您可以在Server项目中创建一个新的Razor页面,而不是设置index.html文件的回退路径。在此页面中,您将呈现客户端项目的应用程序组件。这个博客非常详细地解释了这个过程。如果您选择是否预呈现,过程是相同的。https://andrewlock.net/enabling-prerendering-for-blazor-webassembly-apps/.如果您不同意预渲染Blazor WebAssembly应用程序,您可以将渲染模式设置为WebAssembly。

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

然后,您需要在子项目的应用程序剃刀组件中定义一个参数。

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

然后,我们将上一个片段_Host.cshtml页面扩展到以下内容,以便传递EnvironmentVariables:

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

相关内容

  • 没有找到相关文章

最新更新