代码之家  ›  专栏  ›  技术社区  ›  GregH

Blazor:实现404未找到页面

  •  2
  • GregH  · 技术社区  · 5 年前

    我想在我的应用程序内部实现一个页面,当blazor路由器无法找到匹配的路由时会出现该页面。目前,所有请求都路由到 index.html index.html )并接收控制台错误:

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

    看来我应该能够处理这个问题,因为blazor路由器能够识别出没有定义任何与请求的路由匹配的路由,但是到目前为止,我无法找到任何关于此的文档。

    我如何实现这一点?有没有办法连接blazor路由器并将所有未找到的路由指向预定义的错误路由?

    https://github.com/aspnet/AspNetCore/issues/5489 列出了404处理器的一个问题,但我不确定这是否是为了比我期待的更健壮、更适合生产的产品

    1 回复  |  直到 5 年前
        1
  •  7
  •   ssp VÅ© Đình Hoạt    5 年前

    在App.razor中,添加 <NotFound> 下元素 <Router> 并设置Blazor找不到指定路线时希望显示的内容。

    例如:

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

    (注意:如果它是服务器端应用程序,那么它将是typeof(Startup.Assembly)

    编辑:已更改 <NotFoundContent> <未找到>

    Source

        2
  •  5
  •   enet    5 年前

    试试这个: App.cshtml

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

    创建一个名为Error404.cshtml的组件

    注意:这只是我从挖掘路由器类中收集到的猜测。看见 https://github.com/aspnet/AspNetCore/blob/343208331d9ebbb3a67880133f4139bee2cb1c71/src/Components/src/Microsoft.AspNetCore.Components/Routing/Router.cs

        3
  •  0
  •   Ergin Çelik    3 年前

    您可以正确处理404和状态代码

    https://stackoverflow.com/a/69404900/2123797