Blazor:实现 404 未找到页面

Blazor: Implementing 404 not found page

我想在我的应用程序内部实现一个页面,该页面在 blazor 路由器找不到匹配的路由时显示。目前,所有请求都路由到 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 处理程序的问题,但我不确定这是否比我想要做的更强大和生产就绪

试试这个: App.cshtml

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

创建一个名为 Error404.cshtml

的组件

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

请让我知道它是否适合您。

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

例如:

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

(注意:如果是服务器端应用程序,则为 typeof(Startup).Assembly

Source

您可以将此 link 用于 .net 5.0 blazor 服务器端应用程序。 您可以正确处理 404 和状态码

为了足够的 SEO 添加 App.razor:

<NotFound>
        <h1>404 Not Found</h1>
        <HeadContent>
               <meta name="robots" content="noindex" />
        </HeadContent>
</NotFound>

并实施Sitemap.xml