【发布时间】:2022-05-10 00:01:03
【问题描述】:
经过以下步骤几乎可以工作:
- 安装托管版本的
blazorwasm模板应用程序。dotnet new blazorwasm --hosted -o HostedWasm - 将
_Hosted.cshtml从blazorserver模板复制到Pages文件夹。 - 在服务器的
Startup.cs中将endpoints.MapFallbackToFile("index.html")更改为endpoints.MapFallbackToPage("/_Host") - 在
_Host.cshtml中将<script src="_framework/blazor.server.js"></script>更改为<script src="_framework/blazor.webassembly.js"></script>
现在,如果您dotnet run 服务器,您将能够使用预呈现的 HTML 浏览模板页面。
但是,我有两个问题:
- 这是进行 Blazor WebAssembly 预呈现的“正确”方式吗?我在文档中对此一无所知。
- 如何在服务器端和客户端之间共享 DI?现在,如果您导航
/,然后转到/fetchdata,一切都会好起来的,但是如果您随后在/fetchdata路径上使用F5(例如刷新),您会看到
InvalidOperationException:无法为属性“Http”提供值 在类型“HostedWasm.Client.Pages.FetchData”上。没有注册 'System.Net.Http.HttpClient' 类型的服务。
要修复它,您需要将 HttpClient 配置代码从 Client/Program.cs 复制到 Server/Startup.cs p>
【问题讨论】:
-
为什么你不按照docs.microsoft.com/en-us/aspnet/core/tutorials/…里面的步骤操作?
-
@AmirhosseinMehrvarzi,我在该教程中没有看到任何关于 WebAssembly 的内容。它不是完全使用 Blazor Server 构建的吗?我不想在我的应用程序中使用 SignalR 进行 DOM 修改。感谢提供问题链接!
标签: c# asp.net-core blazor