Blazor 交互模式 (Server/WASM) 设置方法
发布时间 - 2025-12-29 00:00:00 点击率:次Blazor提供Server和WebAssembly两种交互模式,创建项目时需通过模板选定;Server依赖SignalR服务端执行,WASM在浏览器中运行.NET运行时;迁移需手动重构项目结构与配置,.NET 8+支持混合渲染模式按组件指定交互方式。
Blazor 提供两种主流交互模式:Server(服务端渲染)和 WebAssembly(客户端运行),选择和配置方式取决于部署环境与应用需求。关键不是“切换模式”,而是创建项目时选定模板,后续可通过修改配置迁移,但需注意运行机制差异带来的限制。
创建新项目时直接选择模式
使用 .NET CLI 或 Visual Studio 创建 Blazor 项目时,模板决定了初始模式:
-
Blazor Server:执行
dotnet new blazorserver -n MyApp,默认启用 SignalR 实时连接,页面逻辑在服务器执行,浏览器只负责 UI 渲染和事件转发 -
Blazor WebAssembly:执行
dotnet new blazorwasm -n MyApp,生成独立的前端应用,.NET 运行时通过 WebAssembly 在浏览器中运行,可托管在任意静态文件服务器上 - 带 ASP.NET Core Hosted 的 WASM(即“托管式 WASM”):加
--hosted参数,如dotnet new blazorwasm --hosted -n MySolution,会生成包含 API 后端的完整解决方案,适合需要后端 API 支持的离线优先场景
现有项目切换模式需重配,非简单开关
Blazor Server 和 WASM 项目结构、依赖项、启动逻辑不同,无法通过改一个配置项切换。迁移需手动操作:
- 将 Server 项目改为 WASM:需新建 WASM 项目,把
Shared/和Pages/等业务代码迁移过去;替换Program.cs中的AddServerSideBlazor()为AddWasmRenderMode()(.NET 8+)或AddBlazorWebAssemblyHostedService();移除 SignalR 相关引用和_Host.cshtml - 将 WASM 改为 Server:需新建 Server 项目,迁移组件;修改
Program.cs使用AddServerSideBlazor();将index.html替换为_Host.cshtml;删除wwwroot/_framework/相关发布逻辑 - 注意:HTTP 客户端调用(如
HttpClient)、状态管理、认证方式(如 JWT vs Cookie)、静态资源路径等均需同步调整
.NET 8+ 中统一渲染模式(Auto/Interactive)的配置
.NET 8 引入了“混合渲染”能力,允许同一应用中按需指定组件渲染方式(Server、WASM 或 Auto)。关键在 _Imports.razor 和组件标记中设置:
- 在
Program.cs中注册交互式渲染器:builder.Services.AddRendering();
并为不同模式添加服务(如AddInteractiveServerComponents()和AddInteractiveWebAssemblyComponents()) - 在组件顶部添加渲染指令:
@rendermode InteractiveServer或@rendermode InteractiveWebAssembly
或使用自动降级:@rendermode InteractiveAuto(先尝试 WASM,失败则回退 Server) - 确保
_Host.cshtml(Server)或index.html(WA
SM)正确加载对应 JS 初始化脚本(如 blazor.server.js或blazor.webassembly.js)
部署与运行时注意事项
模式决定部署方式和运行约束:
- Server 模式:必须部署在支持 WebSocket/Long Polling 的服务器(如 IIS、Kestrel、Nginx 配合 proxy_pass),需维持用户会话连接,不适用于高延迟或弱网环境
-
WASM 模式:部署为纯静态文件(HTML/JS/WASM),但首次加载体积较大(约 2–5 MB),建议启用 Brotli 压缩、懒加载程序集(
)、预加载关键资源true - 认证与状态:Server 可直接使用 Cookie 认证;WASM 需通过 API Token(如 JWT)并自行管理本地 token 存储与刷新逻辑
基本上就这些。选对初始模板最省事,混合渲染是渐进升级的好工具,但别指望一键切换底层模型——Server 和 WASM 是两套不同的执行契约。
# html
# js
# 前端
# nginx
# cookie
# 浏览器
# app
# websocket
# 工具
# 懒加载
# iis
# 后端
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
Laravel观察者模式如何使用_Laravel Model Observer配置
EditPlus中的正则表达式 实战(2)
如何登录建站主机?访问步骤全解析
详解MySQL数据库的安装与密码配置
Laravel如何创建自定义Facades?(详细步骤)
javascript读取文本节点方法小结
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
jQuery validate插件功能与用法详解
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
Python并发异常传播_错误处理解析【教程】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
Laravel如何配置Horizon来管理队列?(安装和使用)
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
JavaScript如何实现继承_有哪些常用方法
高端企业智能建站程序:SEO优化与响应式模板定制开发
深圳网站制作的公司有哪些,dido官方网站?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
详解Android——蓝牙技术 带你实现终端间数据传输
如何在新浪SAE免费搭建个人博客?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
jQuery 常见小例汇总
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
,南京靠谱的征婚网站?
EditPlus中的正则表达式实战(5)
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
JavaScript如何实现倒计时_时间函数如何精确控制
网易LOFTER官网链接 老福特网页版登录地址
在线制作视频网站免费,都有哪些好的动漫网站?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
Laravel如何实现事件和监听器?(Event & Listener实战)
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
js代码实现下拉菜单【推荐】
香港服务器WordPress建站指南:SEO优化与高效部署策略
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
如何快速生成高效建站系统源代码?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
如何快速上传自定义模板至建站之星?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
高端云建站费用究竟需要多少预算?
大型企业网站制作流程,做网站需要注册公司吗?
黑客如何通过漏洞一步步攻陷网站服务器?


SM)正确加载对应 JS 初始化脚本(如