Blazor:实施404找不到页面

时间:2018-12-19 21:00:12

标签: asp.net-core .net-core .net-core-2.0 blazor

我想实现我的应用程序内部的页面,当blazor路由器无法找到匹配的路由时出现该页面。当前,所有请求都路由到git ls-files --exclude-from .gitignore ,因此我无法像通常那样通过iis处理错误。如果输入无效的路由,将显示空白页(实际上是index.html)并收到控制台错误:

index.html

由于blazor路由器能够识别出没有定义与请求的路由相匹配的路由,因此我似乎应该能够处理此问题,但是到目前为止,我还没有找到任何有关此文档的信息。

我该如何实现?有没有办法钩住blazor路由器并将所有未找到的路由定向到预定义的错误路由?

我看到https://github.com/aspnet/AspNetCore/issues/5489列出了一个针对404处理程序的问题,但是我不确定那是否是比我想要做的更健壮和更易于生产的东西

2 个答案:

答案 0 :(得分:4)

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

例如:

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

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

编辑:将<NotFoundContent>更改为<NotFound>

Source

答案 1 :(得分:3)

尝试一下: App.cshtml

private insertLinebreak(this: SVGTextElement) {
  let labels = d3.select(this);   // works
  // method body left untouched
}

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

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

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