【问题标题】:Is it possible to have two (multiple) clients hosted on the same server in a Blazor WebAssembly app是否可以在 Blazor WebAssembly 应用程序的同一服务器上托管两个(多个)客户端
【发布时间】:2021-06-16 11:29:46
【问题描述】:

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

【问题讨论】:

  • 我已经用链接更新了我的答案

标签: asp.net-core blazor blazor-webassembly blazor-client-side


【解决方案1】:

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

因此,您现在可以想象托管两个 WASM 客户端时的问题:假设您有第二个站点“/site2/page1”,默认后备将始终下载第一个 WASM,而不是在其中找到页面。

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

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

【讨论】:

    【解决方案2】:

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

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

    Hydra Site - 杂种

    Hydra Article

    【讨论】:

    • 你的文章写得很好,例子也很有效。我接受了另一个答案只是因为它更倾向于我想要在我的特定项目上做的事情。
    • 你的文章帮助了我。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-07-22
    • 2020-09-24
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2018-11-18
    • 2021-05-08
    相关资源
    最近更新 更多