You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8中如何让InteractiveServer渲染模式仅使用长轮询?

.NET 8中如何让InteractiveServer渲染模式仅使用长轮询?

嘿,刚好我之前也碰到过类似的需求,给你说下.NET 8里最地道的实现方式,分两步配置就能完全禁用WebSocket,只保留长轮询:

第一步:服务端配置(Program.cs)

在配置Blazor服务的时候,直接给InteractiveServer模式的SignalR Hub设置仅允许长轮询传输。这样服务端会拒绝WebSocket的连接请求,确保所有通信都走长轮询:

builder.Services.AddRazorComponents()
    .AddInteractiveServerRenderMode(options =>
    {
        options.SignalR.ConfigureHubOptions = hubOptions =>
        {
            // 明确指定只启用长轮询传输
            hubOptions.Transports = HttpTransportType.LongPolling;
            // 可选:如果需要排查问题,可以开启详细错误
            hubOptions.EnableDetailedErrors = true;
        };
    });

第二步:客户端配置(_Host.cshtml)

为了保险起见,在客户端启动Blazor的时候,也指定只使用长轮询传输,避免客户端尝试发起WebSocket连接:

<script>
    Blazor.start({
        signalR: {
            transport: 'LongPolling'
        }
    });
</script>

补充说明

这样配置之后,你的InteractiveServer模式就完全依赖长轮询来和服务端通信了,刚好适配你提到的场景:弱网环境下稳定性更好,不会出现WebSocket的超时问题,而且你的交互需求很少,长轮询的性能完全够用。

另外要注意,长轮询的延迟会比WebSocket略高一点,但对于低交互的场景来说,用户几乎感知不到差异,反而能获得更稳定的体验。

备注:内容来源于stack exchange,提问作者user4779

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 12:18:08