Это почти работает после следующих шагов:
- Установите размещенную версию
blazorwasm
шаблона приложения. dotnet new blazorwasm --hosted -o HostedWasm
- Скопируйте
_Hosted.cshtml
из шаблона blazorserver
в папку Pages
. - Замените
endpoints.MapFallbackToFile("index.html")
на endpoints.MapFallbackToPage("/_Host")
на Startup.cs
сервера - Измените
<script src="_framework/blazor.server.js"></script>
на <script src="_framework/blazor.webassembly.js"></script>
в _Host.cshtml
Теперь, если вы dotnet run
сервер, вы сможете перемещаться по страницам шаблонов с предварительно обработанными HTML.
Но у меня есть два вопроса:
- Это «правильный» способ выполнить предварительную визуализацию Blazor WebAssembly? Я ничего не вижу об этом в документации.
- Как разделить DI между сервером и клиентом? Теперь, если вы перейдете к
/
, а затем перейдете к /fetchdata
, все будет хорошо, но если вы затем используете F5 (например, refre sh) на пути /fetchdata
, вы увидите
InvalidOperationException: невозможно предоставить значение для свойства «Http» для типа «HostedWasm.Client.Pages.FetchData». Не существует зарегистрированной службы типа 'System. Net .Http.HttpClient'.
Чтобы исправить , вам нужно скопировать HttpClient
код конфигурации из Client / Program.cs до Server / Startup.cs