Blazor SSR在.NET 8中默认启用自动混合渲染,通过@rendermode指令(如InteractiveAuto)控制组件渲染模式,并需注意预渲染阶段限制及服务端配置。
Blazor SSR(Server-Side Rendering)在 .NET 8 中已正式成为默认的 Blazor 渲染模式之一,它结合了服务端快速首屏渲染与客户端交互能力,无需手动配置 SignalR 连接即可开箱即用。核心要点是:项目模板默认启用 SSR,但需明确理解其运行机制和关键配置项。
使用 .NET 8 SDK 创建新项目时,选择 Blazor Web App 模板(不是旧的 “Blazor Server” 或 “Blazor WebAssembly”):
dotnet new blazor --framework net8.0
App.razor、Routes.razor 和 Pages/ 目录,且 Program.cs 中已注入 AddInteractiveServerComponents() 或 AddInteractiveWebAssemblyComponents()
每个 Razor 组件可独立指定渲染方式,通过 @rendermode 指令控制:
@rendermode InteractiveServer:服务端托管交互,DOM 更新通过 SignalR 实时同步(传统 Blazor Server)@rendermode InteractiveWebAssembly:组件下载到浏览器后本地执行(需引用 WebAssembly 运行时)@rendermode InteractiveAuto:默认推荐 —— 首屏服务端渲染,加载完成后自动切换为 WebAssembly(若可用)或回退到
Server@rendermode Static:纯静态 HTML,无交互能力,适合 SEO 敏感页面(如首页介绍)例如,在 Pages/Index.razor 顶部添加:@rendermode InteractiveAuto 即启用混合渲染。
SSR 默认开启预渲染,但需确保服务端能同步生成初始 HTML:
Program.cs 中是否调用 builder.Services.AddRazorComponents().AddInteractiveServerComponents();
app.MapRazorComponents().AddInteractiveServerRenderMode(); 已注册NavigationManager、JSRuntime 等客户端专属服务,需用 @if (isPrerendering == false) 条件包裹相关逻辑Blazor SSR 应用本质是服务器托管的 Web 应用,部署方式与普通 ASP.NET Core 一致:
dotnet publish -c Release -o ./publish
InteractiveAuto,需确保客户端能访问 _framework/blazor.webassembly.js(WebAssembly 模式所需),否则自动降级为 Server 模式基本上就这些。不复杂但容易忽略的是渲染模式的显式声明和预渲染边界处理 —— 控制好这两点,SSR 就能既快又稳。