Blazor: Реализация 404 не найдена страница - PullRequest
0 голосов
/ 20 декабря 2018

Я хотел бы реализовать внутреннюю страницу моего приложения, которая появляется, когда блейзер-маршрутизатор не может найти подходящий маршрут.В настоящее время все запросы перенаправляются на index.html, поэтому я не могу обрабатывать ошибки через iis, как обычно.Если я введу неверный маршрут, мне будет показана пустая страница (которая на самом деле index.html), и я получу консольную ошибку:

'Router' cannot find any component with a route for '/some/Nonexistent/Route'.

Похоже, я должен быть в состояниичтобы справиться с этим, так как роутер Blazor способен распознать, что не определено ни одного маршрута, соответствующего запрашиваемому маршруту, однако я до сих пор не смог найти никакой документации по этому вопросу.

Как я могу это реализовать?Есть ли способ подключиться к маршрутизатору Blazor и направить все не найденные маршруты на предопределенный маршрут ошибки?

Я вижу, https://github.com/aspnet/AspNetCore/issues/5489 есть проблема, указанная для обработчика 404, однако я не уверенесли это для чего-то более надежного и готового к производству, чем то, что я хочу сделать

Ответы [ 2 ]

0 голосов
/ 21 августа 2019

В App.razor добавьте элемент <NotFoundContent> в поле <Router> и укажите, какой контент вы хотите отображать, когда Blazor не может найти указанный маршрут.

Например:

<Router AppAssembly="typeof(Program).Assembly">
    <NotFoundContent>
        <h1>404 Not Found</h1>
    </NotFoundContent>
</Router>

(Примечание. Если это приложение на стороне сервера, то это будет typeof (запуск). Сборка)

Источник

0 голосов
/ 20 декабря 2018

Попробуйте это: App.cshtml

<Router AppAssembly=typeof(Program).Assembly FallbackComponent="typeof(Error404)" >

Создайте компонент с именем Error404.cshtml

Примечание. Это только предположение, которое я получил при копании класса Router.См. https://github.com/aspnet/AspNetCore/blob/343208331d9ebbb3a67880133f4139bee2cb1c71/src/Components/src/Microsoft.AspNetCore.Components/Routing/Router.cs

Пожалуйста, дайте мне знать, если это работает для вас.

...