预渲染Blazor WebAssembly的正确方法是什么?

时间:2020-07-13 03:58:04

标签: c# asp.net-core blazor

经过以下步骤,它几乎可以正常工作:

  1. 安装blazorwasm模板应用的托管版本。
    dotnet new blazorwasm --hosted -o HostedWasm
    
  2. _Hosted.cshtmlblazorserver模板复制到Pages文件夹。
  3. 将服务器endpoints.MapFallbackToFile("index.html")中的endpoints.MapFallbackToPage("/_Host")更改为Startup.cs
  4. <script src="_framework/blazor.server.js"></script>中的<script src="_framework/blazor.webassembly.js"></script>更改为_Host.cshtml

现在,如果您dotnet run服务器,则可以使用预渲染的HTML导航模板页面。

但是,我有两个问题:

  1. 进行Blazor WebAssembly预渲染是“正确”的方法吗?我在文档中对此一无所获。
  2. 如何在服务器端和客户端之间共享DI?现在,如果您导航/,然后转到/fetchdata,一切都会好起来,但是如果您在/fetchdata路径上使用F5(例如 refresh ),则说明会看到

InvalidOperationException:无法为属性“ Http”提供值 在类型“ HostedWasm.Client.Pages.FetchData”上。没有注册 类型为“ System.Net.Http.HttpClient”的服务。

要对其进行修复,您需要将HttpClient配置代码从 Client / Program.cs 复制到 Server / Startup.cs

0 个答案:

没有答案