.NET 8 Blazor SSR 模式使用教程

来源:这里教程网 时间:2026-02-21 17:35:08 作者:

Blazor SSR(Server-Side Rendering)在 .NET 8 中已正式成为默认的 Blazor 渲染模式之一,它结合了服务端快速首屏渲染与客户端交互能力,无需手动配置 SignalR 连接即可开箱即用。核心要点是:项目模板默认启用 SSR,但需明确理解其运行机制和关键配置项。

创建支持 SSR 的 Blazor 项目

使用 .NET 8 SDK 创建新项目时,选择 Blazor Web App 模板(不是旧的 “Blazor Server” 或 “Blazor WebAssembly”):

命令行执行:
dotnet new blazor --framework net8.0
该模板默认启用“自动混合渲染”(Auto render mode),即服务端首屏 + 客户端水合(Hydration)+ 可选的 WebAssembly 回退 项目结构中会包含
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
即启用混合渲染。

启用服务端预渲染(Prerendering)

SSR 默认开启预渲染,但需确保服务端能同步生成初始 HTML:

检查
Program.cs
中是否调用
builder.Services.AddRazorComponents().AddInteractiveServerComponents();
确认
app.MapRazorComponents<app>().AddInteractiveServerRenderMode();</app>
已注册
预渲染期间无法访问
NavigationManager
JSRuntime
等客户端专属服务,需用
@if (isPrerendering == false)
条件包裹相关逻辑
如需在预渲染阶段获取数据,应使用服务端可执行的逻辑(如 HttpClient 调用 API),避免依赖浏览器环境

部署与注意事项

Blazor SSR 应用本质是服务器托管的 Web 应用,部署方式与普通 ASP.NET Core 一致:

发布命令:
dotnet publish -c Release -o ./publish
可部署到 IIS、Linux+Nginx、Azure App Service、Docker 容器等支持 .NET 8 运行时的环境 无需单独部署前端资源 —— 所有组件、静态文件、服务端逻辑打包在单一应用中 注意:若使用
InteractiveAuto
,需确保客户端能访问
_framework/blazor.webassembly.js
(WebAssembly 模式所需),否则自动降级为 Server 模式

基本上就这些。不复杂但容易忽略的是渲染模式的显式声明和预渲染边界处理 —— 控制好这两点,SSR 就能既快又稳。

相关推荐