【问题标题】:How are (string[] args) passed to Program.Main in a Blazor WebAssembly app?(string[] args) 如何在 Blazor WebAssembly 应用程序中传递给 Program.Main?
【发布时间】:2020-07-04 23:12:19
【问题描述】:

Blazor WASM 应用中的 Program.Main 方法具有 string[] args 参数。 ASP.NET Core 主机站点是否可以将参数传递给这些?我需要能够在构建应用之前从服务器读取值。

【问题讨论】:

  • 你考虑过使用环境变量吗?
  • 你找到答案了吗?

标签: blazor webassembly


【解决方案1】:

Program.Main 被blazor.webassembly.js here 调用:

invokeEntrypoint(assemblyName, null);

点击dotnet static method,然后将 null 转换为空数组。

所以不,现在不可能向它传递参数,因为你只会得到一个空数组。

【讨论】:

  • 当然,现在正确的做法是使用app config :)
  • 如果你正在做一些动态的事情,比如每个租户的配置,这有点棘手
【解决方案2】:

没有默认的方式来传递这些参数,因为它们在blazor.webassembly.js 中确实被硬编码为空。但是,可以通过 javascript 提供它们。

在您的索引页中,包括以下内容:

<!-- Put this script block above the one that loads blazor.webassembly.js -->
<script>
    window.startupParams = function() { return ['first', 'second', 'third']; };
</script>

在您的 Program.cs 中:

public static async Task Main(string[] args)
{
    var builder = WebAssemblyHostBuilder.CreateDefault(args);
    var js = (IJSInProcessRuntime)builder.Services.BuildServiceProvider().GetRequiredService<IJSRuntime>();
    var startupParams = js.Invoke<string[]>("startupParams");

    // ... etc ...
}

在这个github 答案中找到。

我们将来自 asp.net 核心的索引页面作为 index.cshtml 页面提供服务。并在服务器端有逻辑,用所需的参数填充脚本中的数组。

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多