如何将 Blazor WASM 独立应用程序转换为托管应用程序

How to convert a Blazor WASM standalone app to a hosted one

我有一个大型的 Blazor WASM 应用程序。当我开始的时候,我想我想要一个独立的。现在我意识到我应该 select 托管 - 即由单独的 asp.net 网络服务器提供服务。为了查看客户端 seever 组合应该如何工作,我在该配置中创建了一个测试应用程序,但无法弄清楚它是如何工作的。

Web 服务器 BlazorApp1.Server 正在提供来自 BlazorApp1.Client 的 wwwroot 的文件。但我不知道它是如何获取这些文件的。我查看了服务器的 EnvironMent.WebRoot 并没有设置,它的 ContentRoot 指向它自己

除了 webroot 问题之外,我还需要进行任何其他更改。我查看了项目模板,没有看到任何明显的模板

据我所知,托管和独立的客户端项目没有区别。

在托管设置中,在您的服务器中,关键点是:

  • 服务器项目有一个对客户端的项目引用
  • Program.cs应该有app.UseBlazorFrameworkFiles();
    app.MapFallbackToFile("index.html");

我会创建一个新的托管项目并放入原始客户端项目,修复名称(和命名空间)和 link 服务器到正确的客户端。


plus需要添加nuget包

  • microsoft.aspnetcore.components.webassembly //- microsoft.aspnetcore.components.webassembly.devserver
  • microsoft.aspnetcore.components.webassembly.服务器

我也加了app.UseStaticFiles

实际上不,不要将 devserver 添加到服务器应用程序。您想要服务器应用程序中的服务器和客户端中的开发服务器

DevServer 是一个最小的 kestrel 服务器,硬编码为很好的默认值,仅用于启动 blazor wasm 客户端。它还支持客户端c#代码的调试。