Blazor 怎么捕获路由不存在的页面 (404)

发布时间 - 2025-12-26 00:00:00    点击率:
Blazor中捕获404页面依靠Router组件的NotFound模板实现,而非HTTP状态码;需在App.razor中配置NotFound内容,并配合静态服务器fallback至index.html。

Blazor 中捕获 404(路由不存在)页面,核心在于利用 NotFound 组件 —— 这是 Blazor Router 内置的兜底机制,不是靠 HTTP 状态码或服务器重定向。

使用 RouterNotFound 模板

App.razor(或主路由组件)中,Router 组件支持一个 NotFound 属性,它会在所有已注册路由都不匹配时渲染对应内容:

  • 该内容可以是纯文本、自定义组件,甚至带导航的页面
  • 它不触发真实 HTTP 404 响应(浏览器地址栏仍显示错误路径,状态码仍是 200)
  • 适合 SPA 场景下的用户体验兜底

示例:基础 404 页面

App.razor 中写:


    
        
    
    
        页面未找到
        
            ❌ 找不到您访问的页面
路径:@uri
返回首页

注意:@uriRouter 自动提供的当前 URL(需确保在 NotFound 模板内直接使用,无需额外声明)

进阶:跳转前记录或重定向

如果需要做日志、自动跳转或模拟服务端 404 行为,可在 NotFound 中调用 NavigationManager

  • 注入 @inject NavigationManager Navigation
  • @onload 或组件生命周期(如 OnInitialized)触发逻辑
  • 例如 3 秒后跳回首页:Navigation.NavigateTo("/", true);true 强制刷新)
  • 如需上报错误路径,可搭配 JS Interop 或 API 日志服务

服务端配合(可选但推荐)

Blazor WebAssembly 部署到静态服务器时,必须配置服务器将所有未知路径 fallback 到 index.html,否则直接 404;Blazor Server 则由 SignalR 连接兜底,一般无需额外配置。常见配置:

  • Nginx:try_files $uri $uri/ /index.html;
  • IIS:web.config 中添加 rewrite 规则
  • GitHub Pages / Vercel:启用 SPA 模式或配置 _redirects

基本上就这些。Blazor 的 404 是前端路由层面的“未命中”,关键在 NotFound 模板 + 服务端 fallback 配合,不复杂但容易忽略后者。


# html  # js  # 前端  # git  # github  # nginx  # 浏览器  # app  # iis  # ai  # 路由  # 状态码  # red  # gate 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 昵图网官方站入口 昵图网素材图库官网入口  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Thinkphp 中 distinct 的用法解析  如何快速生成高效建站系统源代码?  Laravel如何处理异常和错误?(Handler示例)  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  在线制作视频网站免费,都有哪些好的动漫网站?  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Python文本处理实践_日志清洗解析【指导】  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  如何在云主机上快速搭建网站?  香港服务器如何优化才能显著提升网站加载速度?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  深圳网站制作的公司有哪些,dido官方网站?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  EditPlus中的正则表达式 实战(2)  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  如何在七牛云存储上搭建网站并设置自定义域名?  如何用PHP快速搭建CMS系统?  如何用IIS7快速搭建并优化网站站点?  html5的keygen标签为什么废弃_替代方案说明【解答】  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  如何在建站宝盒中设置产品搜索功能?  Laravel集合Collection怎么用_Laravel集合常用函数详解  敲碗10年!Mac系列传将迎来「触控与联网」双革新  Internet Explorer官网直接进入 IE浏览器在线体验版网址  如何用PHP快速搭建高效网站?分步指南  Laravel如何创建自定义Facades?(详细步骤)  怎么用AI帮你设计一套个性化的手机App图标?  如何快速辨别茅台真假?关键步骤解析  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  如何在建站之星网店版论坛获取技术支持?  如何在建站之星绑定自定义域名?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  用v-html解决Vue.js渲染中html标签不被解析的问题  如何在万网利用已有域名快速建站?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  nodejs redis 发布订阅机制封装实现方法及实例代码  JavaScript实现Fly Bird小游戏