是否可以在 Blazor WebAssembly 应用程序中的同一台服务器上托管两个(多个)客户端

Is it possible to have two (multiple) clients hosted on the same server in a Blazor WebAssembly app

我创建了一个名为“BlazorWebApp”的 Blazor WebAssembly 应用程序,并选中了“ASP.NET Core hosted”复选框。现在,我可以添加另一个客户端应用程序来访问同一台服务器吗?我尝试添加另一个名为 Client2 的 Blazor WebAssembly 并取消选中“Core hosted”复选框,但现在它不起作用,显示一个空浏览器。我想知道如何将服务器设置为 select 构建后将显示的客户端以及新添加的客户端需要与服务器通信的更改。 我找到了这个 link here 但它只解决了冲突错误。

好吧,您可以托管多个 WASM 文件。但是,path/route 映射会出现问题。当你获取 WASM 页面时(例如“/site1/page1”),主机将不会在本地找到它并回退到特定路径(在 Startup.cs 中设置:例如“endpoints.MapFallbackToPage(”/指数”);”)。从那里它将 WASM 下载到客户端,然后解析 WASM 中的映射。

所以您现在可以想象托管两个 WASM 客户端时的问题:假设您有第二个站点“/site2/page1”,默认回退将始终下载第一个 WASM,并且找不到其中的页面.

您可能必须编写自己的“FallbackTo...”,将特定的 path/routes 映射到特定的 WASM 客户端。有可能,但也可能需要一些努力。

编辑:我刚刚发现 Microsoft Docs 实际上有一个关于这个主题的条目:Hosted deployment with multiple Blazor WebAssembly apps

这是完全有可能的。 Blazor 网站本身并不是真正的网站,而是单页应用程序。该网站只是发布平台,因此您可以 运行 从同一个主机站点中获得任意数量的内容。让它工作的诀窍在于配置。关于如何做的详细解释太多了,无法在这里给出答案,所以我在下面提供了链接:

  1. 一个名为 Hydra 的演示站点,其中 运行 包含服务器和 WASM SPA 的整个主机 Mongrel(狗)部分是 4 个模板站点 - 两个服务器和两个 WASM - 以其主要配色方案区分。
  2. 我个人 Github 网站上的一篇文章解释了如何操作。

Hydra Site - 杂种

Hydra Article