【发布时间】:2020-07-04 23:12:19
【问题描述】:
Blazor WASM 应用中的 Program.Main 方法具有 string[] args 参数。 ASP.NET Core 主机站点是否可以将参数传递给这些?我需要能够在构建应用之前从服务器读取值。
【问题讨论】:
-
你考虑过使用环境变量吗?
-
你找到答案了吗?
标签: blazor webassembly
Blazor WASM 应用中的 Program.Main 方法具有 string[] args 参数。 ASP.NET Core 主机站点是否可以将参数传递给这些?我需要能够在构建应用之前从服务器读取值。
【问题讨论】:
标签: blazor webassembly
Program.Main 被blazor.webassembly.js here 调用:
invokeEntrypoint(assemblyName, null);
点击dotnet static method,然后将 null 转换为空数组。
所以不,现在不可能向它传递参数,因为你只会得到一个空数组。
【讨论】:
没有默认的方式来传递这些参数,因为它们在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 页面提供服务。并在服务器端有逻辑,用所需的参数填充脚本中的数组。
【讨论】: