Blazor:实施404找不到页面

Gre*_*egH 4 .net-core asp.net-core .net-core-2.0 blazor

我想实现我的应用程序内部的页面,当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处理程序的问题,但是我不确定这是否是比我想要做的更健壮和可以生产的东西

Moo*_*her 7

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

例如:

<Router AppAssembly="typeof(Program).Assembly">
    <NotFound>
        <h1>404 Not Found</h1>
    </NotFound>
</Router>
Run Code Online (Sandbox Code Playgroud)

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

编辑:更改<NotFoundContent><NotFound>

来源

  • @EmranHussain 似乎很难返回正确的 404 代码,但您应该能够使用依赖项注入来实现它。请参阅/sf/answers/4361067021/ (2认同)

Isa*_*aac 6

试试这个:App.cshtml

<Router AppAssembly=typeof(Program).Assembly FallbackComponent="typeof(Error404)" >
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 在“App.razor”中现在有一个默认的“&lt;NotFound&gt;”元素。 (2认同)