Blazor访问带点号的文件类端点时不显示NotFound页面如何解决
问题根因
ASP.NET Core 托管的Blazor应用默认会将URL中包含.的路径识别为静态文件请求,这类请求不会进入Blazor路由管线,若对应路径不存在实际静态文件,会直接由服务器返回原生404响应,根本不会触发App.razor中<Router>组件的NotFound分支,因此自定义404页面无法渲染。
修复方案
修改项目Program.cs中的配置即可:
- 保留静态文件中间件默认注册逻辑,确保
wwwroot下的静态资源可以正常访问
app.UseStaticFiles();
- 修改兜底回退路由规则,覆盖所有非命中请求(包含带点号的路径),找到文件末尾默认的Blazor回退路由配置,根据托管模式替换为对应规则:
- Blazor Server 项目替换为:
app.MapFallbackToPage("/{**path}", "/_Host");
- 托管模式运行的Blazor WASM项目替换为:
app.MapFallbackToFile("/{**path}", "index.html");
注意:请确认站点下需要直接对外提供访问的静态资源(js、css、图片、用户上传文件等)都存放在默认的
wwwroot目录下,保证这类请求能被静态文件中间件正常命中,不会错误进入Blazor路由处理流程。
配置完成后重启应用,访问带点号的不存在路径时,就会正常渲染你在App.razor中自定义的NotFound页面了。
内容的提问来源于stack exchange,提问作者Berzohr
相关产品推荐
相关产品推荐

