我想实现我的应用程序内部的页面,当blazor路由器无法找到匹配的路由时出现该页面。当前,所有请求都路由到git ls-files --exclude-from .gitignore
,因此我无法像通常那样通过iis处理错误。如果输入无效的路由,将显示空白页(实际上是index.html
)并收到控制台错误:
index.html
由于blazor路由器能够识别出没有定义与请求的路由相匹配的路由,因此我似乎应该能够处理此问题,但是到目前为止,我还没有找到任何有关此文档的信息。
我该如何实现?有没有办法钩住blazor路由器并将所有未找到的路由定向到预定义的错误路由?
我看到https://github.com/aspnet/AspNetCore/issues/5489列出了一个针对404处理程序的问题,但是我不确定那是否是比我想要做的更健壮和更易于生产的东西
答案 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>
答案 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
请让我知道它是否适合您。