.NET 8 Blazor SSR配置疑问:升级后仍用WebSocket,如何调整?
解决.NET 8 Blazor无需WebSocket的SSR配置问题
一、Program.cs 配置调整
- 移除WebSocket相关的Hub映射:静态SSR不需要建立WebSocket连接,可删除
app.MapBlazorHub();语句 - 保留Blazor服务注册(若项目仍需使用Blazor组件):
builder.Services.AddServerSideBlazor();可继续保留,不影响静态渲染
修改后的Program.cs示例:
builder.Services.AddServerSideBlazor(); // 移除 app.MapBlazorHub();
二、页面组件渲染模式修改
你当前使用的ServerPrerendered和Server模式均为交互式服务器端Blazor,会自动建立WebSocket连接。要启用无需WebSocket的静态SSR,需将渲染模式改为Static:
方式1:使用<component>标签
<component type="typeof(DoldurExampleList)" render-mode="Static" />
方式2:使用RenderComponentAsync方法
@( await Html.RenderComponentAsync<DoldurExampleList>(RenderMode.Static))
三、移除交互式Blazor脚本
静态SSR不需要blazor.server.js脚本,因为无需建立WebSocket连接,请在_Layout.cshtml中删除以下代码:
<script src="_framework/blazor.server.js"></script>
可选:保留交互性但使用长轮询替代WebSocket
若需要组件保留交互能力但不想用WebSocket,可配置长轮询传输方式:
在Program.cs中修改Blazor服务注册:
builder.Services.AddServerSideBlazor(options => { options.Transports = HttpTransportType.LongPolling; });
此方式需保留app.MapBlazorHub();和blazor.server.js,但连接会使用长轮询而非WebSocket。
内容的提问来源于stack exchange,提问作者osmanc
相关产品推荐
相关产品推荐

